spring.net 对象创建

简介: 多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,还可以调用工厂方法来创建对象。(Spring.net中文手册) 实例参考。 (1)       Order类 namespace IocTest.

多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,还可以调用工厂方法来创建对象。(Spring.net中文手册)

实例参考。

(1)       Order

namespace IocTest.Entities

{

    public class Order

    {

        public int Unid { get; set; }

        public string OrderName { get; set; }

        public string UserId { get; set; }

 

        public override string ToString()

        {

            return OrderName + ":" + Unid;           

        }

    }

}

 

(一)   构造器

使用构造器时,不要求对象的特定类型,只要声明对象的类型(assembly)就可以了。方法如下:

1.指明对象类型 type="类全名,程序集名"

2.有一个无参的构造函数或者默认构造函数。

 

Xml

<object id="orderConstructor" type="IocTest.Entities.Order"></object>

 

Test

[Test(Description="constructor test")]

public void TestOrderConstructor()

{

    Order oo = XmlFactory.GetObject("orderConstructor") as Order;

    oo.OrderName = "constructor create Test order name";

 

    Console.WriteLine(oo.ToString());

}

 

 

(二)   静态工厂

使用静态工厂方法创建对象时,除了要将对象定义的type属性设为包含静态工厂方法的类型外,还要设置一个名为factory-method的属性来指定静态工厂方法的名称。(Spring.net中文手册)

 

     Xml

<!-- static facotry order-->

  <object id="OrderFactoryStatic" type="IocTest.Entities.OrderFactory"

          factory-method="CreateStaticInstance">

  </object>

此对象type指定的是静态工厂类型,此对象的作用即为静态创建Order

     OrderFactory

namespace IocTest.Entities

{

    public class OrderFactory

    {

        public static Order CreateStaticInstance()

        {

            return new Order();

        }

 

        public Order CreateInstance()

        {

            return new Order();

        }

    }

}

 

     Test

[Test(Description="static factory")]

public void TestStaticFactory()

{

     Order oo = XmlFactory.GetObject("OrderFactoryStatic") as Order;

    oo.OrderName = "static factory create Test order name";

 

     Console.WriteLine(oo.ToString());

}

 

(三)   实例工厂

通过实例工厂方法创建对象与通过静态工厂方法创建对象的配置方式类似。此时,实例工厂方法所在的对象必须也要配置在同一容器(或父容器)中。

如果要通过实例工厂方法创建对象,对象定义就不能包含type属性,而要用factory-object属性引用工厂方法所在的对象;注意,该属性值必须是包含工厂方法的对象的名称,且该对象必须定义在当前容器或父容器中。工厂方法的方法名则通过factory-method属性指定。(Spring.net中文手册)

 

     Xml

<!-- factory order instance-->

  <object id="OrderFactorySample" type="IocTest.Entities.OrderFactory">   

  </object>

  <object id="OrderFactoryInstance"  type="IocTest.Entities.OrderFactory"

           factory-method="CreateInstance"

           factory-object="OrderFactorySample">

</object>

 

     Test

[Test(Description = "instance factory test")]

public void TestInstanceFactory()

{

   Order oo = XmlFactory.GetObject("OrderFactoryInstance") as Order;

   oo.OrderName = "instance factory create Test order name";

 

   Console.WriteLine(oo.ToString());

}

 

(四)   泛型类型

与普通对象相同。但要注意的是左尖括号要以&lt;来代替,右尖括号不用。

Score<T>

namespace IocTest.Entities

{

    public class Score<T>

    {

        public int Unid { get; set; }

        public List<T> ScoreList { get; set; }

 

        public override string ToString()

        {

            string strReturn = string.Empty;

            foreach (T t in ScoreList)

                strReturn += t.ToString();

            return strReturn;

        }

    }

}

 

     Xml

  <!--generic test-->

  <object id="Score" type="IocTest.Entities.Score&lt;int>">   

  </object>

 

     Test

[Test]

public void TestGenericScore()

{

    Score<int> cc=XmlFactory.GetObject("Score") as Score<int>;

    List<int> _list = new List<int>() { 11,2,66,9,0};

    cc.ScoreList = _list;

 

Console.WriteLine(cc.ToString());

}

 

 转载请注明:博客园。

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
2月前
|
Java 关系型数据库 MySQL
Spring5深入浅出篇:Spring中的FactoryBean对象
Spring5深入浅出篇:Spring中的FactoryBean对象
|
3月前
|
Java 程序员 Spring
Spring5深入浅出篇:Spring对象属性注入详解
Spring5深入浅出篇:Spring对象属性注入详解
|
4月前
|
Java 开发者 Spring
Spring中获取Bean对象的三种注入方式和两种注入方法
Spring中获取Bean对象的三种注入方式和两种注入方法
|
6月前
|
Java 程序员 Spring
Spring如何创建一个对象
Spring如何创建一个对象
28 0
|
7月前
|
Java 关系型数据库 API
Spring模板对象Template
Spring模板对象Template
30 0
|
4月前
|
XML Java 数据格式
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
35 0
|
14天前
|
Java Spring
玩转对象掌控权:深入Spring,精准控制对象创建次数
玩转对象掌控权:深入Spring,精准控制对象创建次数
16 0
|
14天前
|
Java 关系型数据库 MySQL
高级对象装配:解析Spring创建复杂对象的秘诀
高级对象装配:解析Spring创建复杂对象的秘诀
27 0
高级对象装配:解析Spring创建复杂对象的秘诀
|
1月前
|
Java 数据库 Spring
Spring Bean、Java Bean和对象的区别与联系
Spring Bean、Java Bean和对象的区别与联系
42 0
|
2月前
|
存储 Java 程序员
【JavaEE进阶】 Spring使用注解存储对象
【JavaEE进阶】 Spring使用注解存储对象