Spring学习之路-(2)Spring IOC&DI
1. 简介
IOC(Inversion of Control)控制反转,由Rod Johnson提出。
DI(Dependency Injection)依赖注入,由Martine Flower提出。
2. 理解IOC(控制反转)---反转资源获取的方向
由上一个的HelloWorld程序我们可以发现两点问题;
1)helloWorld对象是由Spring容器创建的,在HelloWorld类中加入一个无参构造器,我们发现在测试类中对象被创建
2)对象对应的属性值是由Spring容器设置的,在xml文件中值的设置<property name="name" value="world"></property>
控制的意思是指:谁来控制对象的创建,传统的是由程序本身控制,现在有Spring容器来控制对象的产生
反转的意思是指:程序不再主动的创建对象而是被动的接受对象。
控制反转:对象以前由程序本身来创建,使用spring后,由容器来控制对象的创建。
3.理解DI(依赖注入)---组件以预定义好的方式,接受容器的资源注入
依赖的意思是指:bean对象的创建依赖于容器,helloWord对象依赖于name属性。
注入的意思是指:bean对象依赖的资源由容器来设置装配
4. IOC发展历程
4.1 原始做法: 分离接口和实现,调用者主动创建被依赖的对象,然后调用依赖对象的方法
例如:割麦子需要镰刀,原始做法是自己制造镰刀。
4.2 采用工厂模式: 采用静态工厂方法,我们需要代理类对象和真实对象一致;采用动态工厂方法,造成调用的组件跟工厂耦合。
例如:割麦子需要镰刀,割麦子的人去工厂去买镰刀。
4.3 IOC模式
例如:割麦子需要镰刀,割麦子人坐等别人提供镰刀。
5. 优点
1) 对象创建不用应用程序创建,由主动创建到被动接受
2) 更加关注业务实现,不再关注对象创建
3) 层之间的解耦,没有直接的依赖关系
4) 代码发生改变时,修改配置文件即可

浙公网安备 33010602011771号