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();
}
}
唯有努力,人生没有白走的路,每一步都算数

浙公网安备 33010602011771号