spring的核心之一是IOC
IOC:控制反转 inversion of control ,
狂神举例: 以前Service接口 ServiceImpl Dao接口 DaoImpl
当ServiceImpl想调用一个Dao对象时候, 需要在ServiceImpl中去new一个
public interface UserService(){
public void getUser();
}
// 写一个实现类
public class UserServiceImpl implements UserService(){
private UserDao userDao = new UserDaoImple1();
@Override
public void getUser(){
userDao.getUser();
}
}
如果将来需要换实现类,则只能去改代码,而且最主要的是“Service与Dao层耦合在一起”不好!!
现在,程序的 “主动权” 在 程序员手里,不灵活!
改进:
public interface UserService(){
public void getUser();
}
// 写一个实现类
public class UserServiceImpl implements UserService(){
private UserDao userDao;
public setUserDao(UserDao userDao){
this.userDao = userDao;
}
@Override
public void getUser(){
userDao.getUser();
}
}
控制反转,具体用哪个userDao,用户决定吧,自己set 我不管了。