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容器,其实现方法是依赖注入

posted @ 2020-09-01 17:03  Fabulo  阅读(137)  评论(0)    收藏  举报