======== 反转控制 ======== 反转控制,Inverse of Control,IoC 何为控制? - 控制即对成员变量赋值的控制权 public class UserServiceImpl implements UserService { // 直接在代码中对成员变量赋值 // 对成员变量赋值的控制权在代码中 // UserDaoImpl的出现,增加了代码间的耦合性 private UserDao userDao = new UserDaoImpl(); @Override public void login(String username, String password) { ... User user = userDao.query(username, password); ... } @Override public void register(User user) { ... userDao.save(user); ... } } ----------------------------------------------------- public class UserServiceImpl implements UserService { // Spring根据配置文件对成员变量赋值(注入) // 对成员变量赋值的控制权在Spring中 // UserDaoImpl不再现,避免了代码间的耦合 private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public void login(String username, String password) { ... User user = userDao.query(username, password); ... } @Override public void register(User user) { ... userDao.save(user); ... } } 何为反转? - 将对成员变量赋值的控制权由代码转移到Spring(工厂和配置文件)中 所谓反转控制,就是将对成员变量赋值的控制权由代码转移到Spring(工厂和配置文件)中。 - 好处:解耦 - 底层实现:工厂设计模式