您的位置:首页 > 编程语言 > Java开发

SPRING.NET 1.3.2 学习3--IOC容器

2013-02-28 11:29 477 查看
IoC相关组件功能介绍Spring.Core:该程序集是Spring.Net IoC容器的基础.IObjectFactory:该接口提供了一个高级的配置机制并能管理任何类型的对象.IApplicationContext:IObjectFactory的子接口,更容易的集成Spring.NET的AOP特性,消息资源处理(用于国际化),事件传播,应用程序特定层上下文,例如用于web应用程序中的WebApplicationContext配置元数据:先看看XML元数据的基本结构

<objects xmlns="http://www.springframework.net">
  <object id="..." type="...">
    <!-- collaborators and configuration for this object go here -->
  </object>
  <object id="...." type="...">
    <!-- collaborators and configuration for this object go here -->
  </object>
 
  <!-- more object definitions go here -->
</objects>


id属性是一个字符串,你用来识别个体对象定义,type属性定义对象的类型和使用完全限定类型名称,包括程序集名称举例说明如何使用IApplicationContext
IApplicationContext context = new XmlApplicationContext("services.xml", "data-access.xml");
构造函数中,第一个参数为服务层对象配置文件,第二个为数据访问层配置对象services.xml

View Codedaos.xml

View Code从上面的两个文件中可以看出,服务层包含PetStoreService类,和基于NHibernate对象/关系映射框架的两个数据访问对象类型HibernateAccountDao和HibernateItemDao.属性名元素指的是类的属性名称,ref元素指的是给对象属性定义的别名.id和ref元素之间的依赖关系,详见元对象的依赖注入配置.从非默认的资源位置加载配置元数据:上面加载配置文件的方式是假设配置文件位于bin\Debug根目录之下,你还可以使用IResource接口从其它路径加载资源文件,如:
IResource input = new FileSystemResource(@"D:\Objects.xml");
//实际物理路径
IObjectFactory factory = new XmlObjectFactory(input);
另一种方法是在程序集下找配置文件
IApplicationContext context = new XmlApplicationContext(
                 "file:///services.xml",
                 "assembly://MyAssembly/MyDataAccess/data-access.xml");
IObjectFactory factory = (IObjectFactory) context;
使用如下的格式访问程序集内嵌的资源文件,assembly://<AssemblyName>/<NameSpace>/<ResourceName>.在App.config/Web.config中声明配置容器

View Code上面的文件省略了Content元素的type属性,在一个独立的程序中type属性默认为Spring.Context.Support.XmlApplicationContext类,而在Web程序中默认为WebApplicationContext.例如:

View Code从App.config/Web.config自定义配置部分得到IApplicationContext的引用,可以使用如下代码
IApplicationContext ctx = ContextRegistry.GetContext();
这个ContextRegistry用于实例化应用程序上下文和执行服务定位器的方式访问其他对象。Spring.NET 提供了Spring.Context.Support.ContextHandler,帮助我们直接在启动程序的时候加载配置信息。实际的配置文件通过 spring 元素中 context 元素下的 resource 指定,文件的话使用 file:// 协议描述,还可以使用其它的协议。例如嵌入在程序集中的配置文件可以使用 assembly:// , 直接写在配置文件中则为 config://

View Code你还可以使用IApplicationContext构造器从多个xml文件中加载定义的对象

View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: