IOC容器

IOC概念

控制反转(Inversion of Control ),是一个重要的面向对象编程法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。

反射:

 

依赖注入(Dependency Injection):

ICoreDbSession dbSession=CallContext.GetData("Dbsession") as ICoreDbsession;

if (dbSession==null){

dbSession=SpringHelper.GetObject<ICoreDbSession>("DBSession");//拿到了容器封装的上下文ContextRegistry.GetContext()

 

CallContext.SetData("DbSession",dbSession);

}

 

 

 

配置文件:

<object id="DBSession" type="ITOO.FreshNewReport.DAL.DBSession,ITOO.FreshNewReport.DAL" singleton="false">

<property name="StudentManageDals" ref="StudentManageDals">

</object>

 

 

<object  id="StudentManageDals" type="ITOO.FreshNewReport.DAL.StudentManageDals,ITOO.FreshNewReport.DAL" singleton="false">

 

依赖查找(Dependency Lookup):

IFamilyInfoBll  FamilyInfoBll=SpringHelper.GetObject<IFamilyInfoBll  >("FamilyInfoBll")

IOC优缺点:

好处:

把对象生成放在了xml里面定义,更换子类很方便,实现热插拔。

缺点:

1.生成类的步骤变多了

2.生成对象在效率上有损耗

3.缺少IDE重构的操作支持,要手动修改类

我的个人理解:

IOC容器,就是在程序运行的时候,首先读取配置文件中的<object>中的关于IOC的代码,实例化出IOC中给出的类型、具体的类;然后在B层,或者WCF层,都可以将具体的类强转成接口,来完成类的实例化。

依赖注入:

可以注入自己想要的属性,容器提供回调接口和上下文条件给组件。把符合依赖关系的对象通过JavaBean属性或者构造函数传递给对象。

依赖查找:

可以通过查找的方法查找自己实例化的类。通过容器提供的API来查找资源与协作对象。

原文地址:https://www.cnblogs.com/wangmei/p/4709354.html