Spring.net 学习笔记二 依赖注入
Spring.NET 依赖注入 <property name="Name" value="jackyong"/> 而property 标签正是用来属性注入 值类型的注入是需要使用property 节点的value属性 <property name="Name" value="jackyong"/> <property name="Age" value="25"/> 同理,内联类型可以是循环引用的对象 <property name="Friend"> <object type="Jackyong.Spring.NET.Person, Spring.NET"> <property name="Name" value="jackpeng"/> <property name="Age" value="23"/> <property name="Friend" ref="person"/> </object> </property> 构造器注入使用constructor-arg标签作为标示,同样具有于属性注入相同的方式,使用name,ref,value作为构造器注入的属性。 <constructor-arg name="argPerson" ref="person"/> <constructor-arg name="intProp" value="1"/> ref 是用来表示是关联到哪个object name 属性是指属性的名称。 <constructor-arg name="argPerson" ref="person"/> <constructor-arg name="intProp" value="1"/>
代码:
一.定义person 模板
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Jackyong.Spring.NET { public class Person { public string Name { get; set; } public int Age { get; set; } public Person Friend { get; set; } } }
//构造数据
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Jackyong.Spring.NET { public class PersonInitializtion { private Person argPerson; private int intProp; public PersonInitializtion(Person argPerson, int intProp) { this.argPerson = argPerson; this.intProp = intProp; } public void WriteLine() { Console.WriteLine(intProp); //构造函数注入的整型参数 Console.WriteLine(string.Format("intProp:{0}", intProp)); //构造函数注入的Person Console.WriteLine(string.Format("argPerson Name:{0}", argPerson.Name)); Console.WriteLine(string.Format("argPerson Age:{0}", argPerson.Age)); //内联对象Friend Console.WriteLine(string.Format("argPerson Friend Name:{0}", argPerson.Friend.Name)); Console.WriteLine(string.Format("argPerson Friend Age:{0}", argPerson.Friend.Age)); //内联对象的循环引用 Console.WriteLine(string.Format("argPerson Friend Friend Name:{0}", argPerson.Friend.Friend.Name)); Console.WriteLine(string.Format("argPerson Friend Friend Age:{0}", argPerson.Friend.Friend.Age)); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Spring.Context; using Spring.Context.Support; namespace Jackyong.Spring.NET { class Program { static void Main(string[] args) { IApplicationContext ctx = ContextRegistry.GetContext(); PersonInitializtion initializtion = ctx.GetObject("PersonInitializtion") as PersonInitializtion; initializtion.WriteLine(); } } }
<?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="person" type="Jackyong.Spring.NET.Person,Spring.NET"> <!--属性值类型注入--> <property name="Name" value="jackyong"/> <property name="Age" value="25"/> <!--内联对象注入--> <property name="Friend"> <object type="Jackyong.Spring.NET.Person, Spring.NET"> <property name="Name" value="jackpeng"/> <property name="Age" value="23"/> <property name="Friend" ref="person"/> </object> </property> </object> <object id="PersonInitializtion" type=" Jackyong.Spring.NET.PersonInitializtion, Spring.NET"> <!--构造器注入--> <constructor-arg name="argPerson" ref="person"/> <constructor-arg name="intProp" value="1"/> </object> </objects> </spring> </configuration>
出处:http://www.cnblogs.com/liuyong/
作者喜欢研究 Sql Server ,ASP.NET MVC , Jquery WCF 等技术,同时关心分布式架构的设计应用。转载请保留原文链接,谢谢!