Spring---IOC简介

1、引言

1.1 为什么需要IoC容器

(1)应用程序主动控制对象的实例化及依赖装配

A a = new AImpl();  
B b = new BImpl();  
a.setB(b); 
本质:创建对象,主动实例化,直接获取依赖,主动装配 
缺点:更换实现需要重新编译源代码
           很难更换实现、难于测试
           耦合实例生产者和实例消费者 


A a = AFactory.createA();  
B b = BFactory.createB();  
a.setB(b)
本质:创建对象,被动实例化,间接获取依赖,主动装配(简单工厂) 
缺点:更换实现需要重新编译源代码
           很难更换实现、难于测试

 

A a = Factory.create(“a”);  
B b = Factory.create(“b”);  
a.setB(b); 

<!—配置.properties-->
a=AImpl  
b=BImpl 

本质:创建对象,被动实例化,间接获取依赖, 主动装配
        (工厂+反射+properties配置文件、Service Locator、注册表) 
缺点:冗余的依赖装配逻辑


(2)可配置通用工厂:工厂主动控制,应用程序被动接受,控制权从应用程序转移到工厂

//返回装配好的a   
A a = Factory.create(“a”);

<!—配置文件-->
<bean id=“a” class=“AImpl”>  
    <property name=“b” ref=“b”/>  
</bean>  
<bean id=“b” class=“BImpl”/> 
本质:创建对象和装配对象, 
      被动实例化,被动接受依赖,被动装配
     (工厂+反射+xml配置文件)
缺点:不通用


步骤:
1、读取配置文件根据配置文件通过反射 创建AImpl
2、发现A需要一个类型为B的属性b
3、到工厂中找名为b的对象,发现没有,读取配置文件通过反射创建BImpl
4、将b对象装配到a对象的b属性上
【组件的配置与使用分离开(解耦、更改实现无需修改源代码、易于更好实现)】 


(3)IoC(控制反转)容器:容器主动控制

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值