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>