1、IOC
Inversion of Control 控制反转
public class UserServiceImpl{
//UserDao由Service创建及维护
private UserDao userDao = new UserDaoImpl();
public void regist(User user){
userDao.save(user);
}
}
控制反转就是指UserServiceImpl本身不负责依赖对象的创建及维护,依赖对象的创建及维护交由外部容器来负责,这样控制权发生转移,控制权转移就是控制反转。
外部容器,及IOC容器:存储对象(Spring Bean)的容器,这些对象由Spring创建。UserServiceImpl在使用的时候直接到IOC容器中去拿就可以了。
2、DI
dependency injection 依赖注入 (IOC容器中存储的对象,这里获取使用)
public class UserServiceImpl{
//UserDao由外部容器创建及维护
private UserDao userDao;
//让容器将创建好的对象注入到service中
void setUserDao(UserDao userDao){
this.userDao = userDao;
}
public void regist(User user){
userDao.save(user);
}
}
依赖注入是指在运行期,由外部容器动态的将依赖对象注入到组件。