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/

转载请注明:博客园

目录
相关文章
|
4月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
1天前
|
XML 安全 Java
Spring Boot中使用MapStruct进行对象映射
本文介绍如何在Spring Boot项目中使用MapStruct进行对象映射,探讨其性能高效、类型安全及易于集成等优势,并详细说明添加MapStruct依赖的步骤。
|
2月前
|
Java Spring
获取spring工厂中bean对象的两种方式
获取spring工厂中bean对象的两种方式
46 1
|
2月前
|
前端开发 Java Spring
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
124 2
|
2月前
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
39 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
4月前
|
安全 Java C#
Spring创建的单例对象,存在线程安全问题吗?
Spring框架提供了多种Bean作用域,包括单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)、全局会话(GlobalSession)等。单例是默认作用域,保证每个Spring容器中只有一个Bean实例;原型作用域则每次请求都会创建一个新的Bean实例;请求和会话作用域分别与HTTP请求和会话绑定,在Web应用中有效。 单例Bean在多线程环境中可能面临线程安全问题,Spring容器虽然确保Bean的创建过程是线程安全的,但Bean的使用安全性需开发者自行保证。保持Bean无状态是最简单的线程安全策略;
|
5月前
|
缓存 安全 Java
Spring高手之路21——深入剖析Spring AOP代理对象的创建
本文详细介绍了Spring AOP代理对象的创建过程,分为三个核心步骤:判断是否增强、匹配增强器和创建代理对象。通过源码分析和时序图展示,深入剖析了Spring AOP的工作原理,帮助读者全面理解Spring AOP代理对象的生成机制及其实现细节。
54 0
Spring高手之路21——深入剖析Spring AOP代理对象的创建
|
6月前
|
存储 XML Java
在 Java 中,Spring 框架提供了一种更加简单的方式来读取和存储对象
【6月更文挑战第18天】Java Spring 框架利用注解简化对象管理:@Component(及衍生注解@Service等)标注Bean类,自动注册到容器;@Autowired用于字段或方法,实现依赖注入,提升灵活性,减少XML配置。
35 2
|
5月前
|
Java 微服务 Spring
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
|
6月前
|
开发框架 .NET API
ASP.NET Core Web中使用AutoMapper进行对象映射
ASP.NET Core Web中使用AutoMapper进行对象映射

热门文章

最新文章