关于Spring.net及IoC、DI等的介绍,此处就不详述——偶不擅长啦。下面直入主题:首先说说基础配置。
首先是添加引用了,现在微软的nuget操作起来很方便了,直接在nuget找到Spring.Core的项,安装即可,至于其他的Spring.NET相关的dll可以需要时添加使用,如用AOP时,添加Spring.AOP。
下面就是创建对象了:
首先,可以使用最简单的例子,将所有配置都放在app.config中,类及配置文件见下方代码:
/// <summary> /// 利用App.config配置创建对象 /// </summary> public class AppConfigObject { public AppConfigObject() { } public void Run() { Console.WriteLine("AppConfigObject运行!"); } }
<!--app.config配置文件--> <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" /> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> </sectionGroup> </configSections> <spring> <context> <resource uri="config://spring/objects" /> </context> <objects xmlns="http://www.springframework.net"> <object id="AppConfigObject" type="SpringNETCreateObject.AppConfigObject, SpringNETCreateObject" /> </objects> </spring> </configuration>
使用时如下即可:
IApplicationContext ctx = ContextRegistry.GetContext(); AppConfigObject dao = ctx.GetObject("AppConfigObject") as AppConfigObject; dao.Run();
但是,软件开发中,为了方便管理,往往添加单独的xml配置。
如:添加单独的Objects.xml
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> <object id="XMLObject" type="SpringNETCreateObject.XMLObject, SpringNETCreateObject"> </object> </objects>
然后再app.config的spring/context下添加
<!--文件复制到输出目录、生成操作为内容时使用file://--> <resource uri="file://Objects.xml"/>
或者直接在代码里使用xml
IApplicationContext ctx1 = new XmlApplicationContext( "file://Objects.xml" );
对象的创建则使用ApplicationContext对象。
最后,讲一些特殊类型的对象创建配置。其中包括嵌入类型、泛型类型。
其中需要在app.config的spring/context下添加
<!--添加resource时,可以自行选择assembly或file,上面用过file了,这里用一下assembly--> <!--使用assembly时,需要将生成操作修改为嵌入的资源--> <resource uri="assembly://DAO/DAO/DAOObjects.xml"/>
objects配置文件:
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> <object id="normaldao" type="DAO.NormalDAO,DAO"/> <!--嵌套类型需要使用‘+’连接--> <object id="nesteddao" type="DAO.NestedDAO+InnerDAO,DAO" /> <!--泛型类型中的小于号需以‘<’替代--> <object id="genericdao" type="DAO.GenericDAO<int>,DAO" /> </objects>
相关类:
/// <summary> /// 基类 /// </summary> public interface BaseDAO { void Run(); } /// <summary> /// 普通类型 /// </summary> public class NormalDAO : BaseDAO { public void Run() { Console.WriteLine("NormalDAO运行"); } } /// <summary> /// 嵌套类型 /// </summary> public class NestedDAO { public class InnerDAO : BaseDAO { public void Run() { Console.WriteLine("NestedDAO运行"); } } } /// <summary> /// 泛型类型 /// </summary> /// <typeparam name="T"></typeparam> public class GenericDAO<T> : BaseDAO { public void Run() { Console.WriteLine("泛型({0})运行", this.GetType()); } }
使用:
BaseDAO normaldao = ctx.GetObject("normaldao") as BaseDAO; normaldao.Run(); BaseDAO nesteddao = ctx.GetObject("nesteddao") as BaseDAO; nesteddao.Run(); BaseDAO genericdao = ctx.GetObject("genericdao") as BaseDAO; genericdao.Run();
博客不错,嘎嘎!
年中快乐!
不错,不错,看看了!