Spring——IOC理论推导
1.UserDao接口
package com.yl.dao;
public interface UserDao {
void getUser();
}
2.UseDaoImpl实现类

3.UserService业务接口
package com.yl.service;
public interface UserService {
void getUser();
}
4.UserServiceImpl业务实现类
原来
private UserDao userDao = new UserDaoOracleImpl();
public void getUser() {
userDao.getUser();
}
-
程序是主动创建对象,控制权在程序员手中
使用Set接口
private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void getUser() {
userDao.getUser();
}
-
使用了set注入后,程序不在具有主动性,而是变成了被动的接受对象
用户根据自己的需求进行对象的调用
public class MyTest {
public static void main(String[] args) {
//用户实际调用的是业务层,dao层不需要接触
UserServiceImpl userService = new UserServiceImpl();
//用户自己指定对象
userService.setUserDao(new UserDaoSqlserverImpl());
userService.getUser();
}
}
这种思想从本质上解决了问题,我们不用再去管理对象的创建了,系统的耦合性大大降低,可以更加专心在业务的实现上
IOC本质
控制反转IoC是一种设计思想,依赖注入DI实现IOC的一种方法
控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式,在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入
浙公网安备 33010602011771号