1. 程式人生 > 實用技巧 >Spring——IOC理論推導

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容器,其實現方法是依賴注入