ITKeyword,专注技术干货聚合推荐

注册 | 登录

Spring.NET学习笔记5——容器中对象的作用域(基础篇)

hliq5399 分享于 2011-03-26

推荐:Spring.NET学习笔记4——对象的创建(基础篇)

学过了前面的课程,我们来一起学习Spring.NET的IoC容器对象的创建。   创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建   多数情况下

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

一、属性注入

上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="SpringNetIoC.ModernPerson, SpringNetIoC">

<property name="Tool" ref="computer"/> </object> 复制代码 值类型的注入是需要使用property 节点的value属性。如<property name="Name" value="Liu Dong"/> 作为内联类型可以使用如下: <property name="Friend">

<object type="SpringNetDi.Person, SpringNetDi"/> </property> 复制代码 同理,内联类型可以是循环引用的对象(见代码处)。 二、构造函数注入 构造器注入使用constructor-arg标签作为标识。同样具有于属性注入相同的方式,使用name、ref、value作为构造器注入的属性,如下: <constructor-arg name="argPerson" ref="person"/> <constructor-arg name="intProp" value="1"/> 复制代码 程序的代码如下:

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public Person Friend { get; set; }

} 复制代码 PersonDao

public class PersonDao

{

private Person argPerson;

private int intProp;

public PersonDao(Person argPerson, int intProp)

{

this.argPerson = argPerson;

this.intProp = intProp;

}

public void Get()

{

//构造函数注入的整型参数

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}&q

推荐:Spring.NET学习笔记7——依赖对象的注入(基础篇)

一、属性注入

上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是

uot;, argPerson.Friend.Friend.Age));

}

} 复制代码 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="person" type="SpringNetDi.Person, SpringNetDi">

<!--属性值类型注入-->

<property name="Name" value="Liu Dong"/>

<property name="Age" value="27"/>

<!--内联对象注入-->

<property name="Friend">

<object type="SpringNetDi.Person, SpringNetDi">

<property name="Name" value="Beggar"/>

<property name="Age" value="23"/>

<property name="Friend" ref="person"/>

</object>

</property>

</object>

<object id="personDao" type="SpringNetDi.PersonDao, SpringNetDi">

<!--构造器注入-->

<constructor-arg name="argPerson" ref="person"/>

<constructor-arg name="intProp" value="1"/>

</object>

</objects>

</spring> </configuration> 复制代码 Program

class Program

{

static void Main(string[] args)

{

IApplicationContext ctx = ContextRegistry.GetContext();

PersonDao dao = ctx.GetObject("personDao") as PersonDao;

dao.Get();

Console.ReadLine();

}

} 复制代码 输出效果如下:

推荐:Spring 学习笔记 Bean的作用域

在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域。作用域将对Bean的生命周期和创建方式产生影响。在低版

一、属性注入   上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。