IOC理论推导改进之后的代码
时间:2020-05-09
本文章向大家介绍IOC理论推导改进之后的代码,主要包括IOC理论推导改进之后的代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
IOC理论推导改进之后的代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="MysqlImpl" class="com.liqilaing.dao.UserDaoMysqlImpl"/>
<bean id="DaoImpl" class="com.liqilaing.dao.UserDaoImpl"/>
<bean id="UserServiceImpl" class="com.liqilaing.service.UserServiceImpl">
<property name="userDao" ref="MysqlImpl"/>
</bean>
<!--
ref:引用Spring容器中创建好的对象
value:具体的值,基本数据类型
-->
</beans>
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;
import com.liqilaing.service.UserService;
import com.liqilaing.service.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
/*
// 用户实际调用的是业务层,dao层不需要接触
UserService userService = new UserServiceImpl();
// ((UserServiceImpl) userService).setUserDao(new UserDaoImpl());
((UserServiceImpl) userService).setUserDao(new UserDaoMysqlImpl());
userService.getUser();
*/
// 获取ApplicationContext,拿到Spring的容器
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("bean.xml");
// 需要什么,就直接get
UserServiceImpl userServiceImpl = (UserServiceImpl) applicationContext.getBean("UserServiceImpl");
userServiceImpl.getUser();
}
}
package com.liqilaing.service;
import com.liqilaing.dao.UserDao;
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;
public class UserServiceImpl implements UserService{
// private UserDao userDao = new UserDaoMysqlImpl();
private UserDao userDao;
// set
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/*
我们使用一个set接口实现,已经发生了革命性的变化!
之前,程序员是主动创建对象!控制权在程序员手上!
使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了.
系统的耦合性大大降低,可以更加专注的在业务的实现上!这是IOC的原型!
*/
public void getUser() {
userDao.getUser();
}
}
原文地址:https://www.cnblogs.com/liqiliang1437/p/12858955.html
- 基于Redis实现分布式应用限流
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- Eureka:扩展ClientFilter实现服务注册自定义过滤
- 【系统日志】log4j配置学习总结
- 【译】MySQL char、varchar的区别
- 【jfinal修仙系列】修改ShiroPlugin支持jfinal3.0
- MySQL二进制日志
- 【nginx启动】 97 Address family not supported by protocol
- jfinal 内置的handler功能
- JS 对指定iframe 全屏操作
- 【jfinal修仙系列】扩展CacheInterceptor支持Redis缓存
- 基于Redis的定时任务
- 【jfinal】扩展JFIANL 支持加载jar包中SQL模板
- 【jfinal修仙系列】扩展ShiroCacheManager 支持Redis缓存
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何解决nodejs中cpu密集型的任务
- 博客园主题1【备份】
- 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇)
- POSTGRESQL 到底怎么访问同instance 的库--
- 简单工厂模式
- 这 9 种方法有效帮你提高国内访问 Github 的速度
- python实现sm2和sm4国密(国家商用密码)算法
- 面试常考算法之区间问题
- 爬虫 | JS逆向某验滑动加密分析
- LeetCode | 28.实现strStr()
- Redis | Redis 哈希相关命令
- 如何访问SAP Spartacus里的config数据
- 工具系列 | HTTP API 身份验证和授权
- Providers in SAP Spartacus
- 详解ELF可执行文件格式:读取头部信息和程序表头