IOC与DI简介

IOC:控制反转(Inverse Of Control)
spring

在没用spring框架以前咱们是这样写程序的:编程

private UserDao userDao = new UserDaoImpl();框架

也就是说UserServiceImpl类中有哪一个具体类属性由他本身决定,此时的编程完彻底全是控制在咱们写程序人的手里,咱们本身new userDao,也本身决定用哪一个userDao的实现。此时咱们是依赖于具体的实现类。spa

在使用了spring框架以后:code

private UserDao userDao; 
xml

此时只指定了接口,没有具体的实现类,控制权限交给了spring来管理。由spring来初始化userDao对象

控制反转也就是说spring控制了原来的具体实现为抽象的概念,原来是直接针对具体的实现来编写代码,使用userDao的时候,直接使用其实现。接口

如今使用了spring以后,这个userDao交由spring来控制了,咱们要作的就是作具体的实现。这样达到了面对接口编程。ci

控制反转概念很模糊,也有不少种版本解释,可是不必死扣具体的理论。理解是什么意思便可。get


DI:依赖注入(Dependency Injection)

1
2
3
< bean id = "userService" class = "com.fz.service.UserService" >
    < property name = "userDao" ref = "userDao" ></ property >
</ bean >

在这个userService中有个属性是userDao接口,假如咱们调用userSercie的userAdd方法的时候,其实也就是在userService的实现类里面调用userDao的userAdd方法。这个userAdd方法的具体实现类依赖于spring初始化的userDao这个对象。

因此,能够理解为这个userService对象依赖于spring容器注入的userDao对象。






相关文章
相关标签/搜索