1.原料类

namespace CreateObjects
{
    public class GenericClass<T>
    {

}
}

PersonDao 类 包含嵌套类型

namespace CreateObjects
{
    public class PersonDao
    {
        public class Person
        {
            public override string ToString()
            {
                return "我是全套类Person";
            }
        }

public override string ToString()
        {
            return "我是PersonDao";
        }
    }
}
3.实例工厂类

namespace CreateObjects
{
    public class InstanceObjectsFactory
    {
        public PersonDao CreateInstance()
        {
            return new PersonDao();
        }
    }
}
4.静态工厂类

namespace CreateObjects
{
    public static class StaticObjectsFactory
    {
        public static PersonDao CreateInstance()
        {
            return new PersonDao();
        }
    }
}
5.最重要的部分xml 构造器 xml文件

<?xml version="1.0" encoding="utf-8" ?>

<objects xmlns="http://www.springframework.net"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.net
        http://www.springframework.net/xsd/spring-objects.xsd">

<!--构造器-->
  <object id="personDao" type="CreateObjects.PersonDao, CreateObjects" />

<!--嵌套类型-->
  <object id="person" type="CreateObjects.PersonDao+Person, CreateObjects" />

<!--静态工厂-->
  <object id="staticObjectsFactory" type="CreateObjects.StaticObjectsFactory, CreateObjects" factory-method="CreateInstance"/>

<!-- 实例工厂 -->
  <object id="instanceObjectsFactory" type="CreateObjects.InstanceObjectsFactory, CreateObjects" /><!--工厂-->
  <object id="instancePersonDao" factory-method="CreateInstance" factory-object="instanceObjectsFactory" /> <!--创建的对象-->

<!-- 泛型类型 GenericClass<int> -->
  <object id="genericClass" type="CreateObjects.GenericClass&lt;int>, CreateObjects" />

</objects>

6.调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spring.Context;
using Spring.Objects.Factory;
using Spring.Context.Support;

namespace CreateObjects
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateByConstructor();  // 构造器创建
            CreateNested();  // 嵌套类型创建
            CreateByStaticFactory();  // 静态工厂创建
            CreateByInstanceFactory();  // 实例工厂创建
            CreateGenericClass();  // 创建泛型

Console.ReadLine();
        }

/// <summary>
        /// 构造器创建
        /// </summary>
        static void CreateByConstructor()
        {
            string[] xmlFiles = new string[]
            {
                "assembly://CreateObjects/CreateObjects/Objects.xml"
            };
            IApplicationContext context = new XmlApplicationContext(xmlFiles);

IObjectFactory factory = (IObjectFactory)context;
            Console.WriteLine(factory.GetObject("personDao").ToString());
        }

/// <summary>
        /// 嵌套类型创建
        /// </summary>
        static void CreateNested()
        {
            string[] xmlFiles = new string[]
            {
                "assembly://CreateObjects/CreateObjects/Objects.xml"
            };
            IApplicationContext context = new XmlApplicationContext(xmlFiles);

IObjectFactory factory = (IObjectFactory)context;
            Console.WriteLine(factory.GetObject("person").ToString());
        }

/// <summary>
        /// 静态工厂创建
        /// </summary>
        static void CreateByStaticFactory()
        {
            string[] xmlFiles = new string[]
            {
                "assembly://CreateObjects/CreateObjects/Objects.xml"
            };
            IApplicationContext context = new XmlApplicationContext(xmlFiles);

IObjectFactory factory = (IObjectFactory)context;
            Console.WriteLine(factory.GetObject("staticObjectsFactory").ToString());
        }

/// <summary>
        /// 实例工厂创建
        /// </summary>
        static void CreateByInstanceFactory()
        {
            string[] xmlFiles = new string[]
            {
                "assembly://CreateObjects/CreateObjects/Objects.xml"
            };
            IApplicationContext context = new XmlApplicationContext(xmlFiles);

IObjectFactory factory = (IObjectFactory)context;
            Console.WriteLine(factory.GetObject("instancePersonDao").ToString());
        }

/// <summary>
        /// 创建泛型
        /// </summary>
        static void CreateGenericClass()
        {
            string[] xmlFiles = new string[]
            {
                "assembly://CreateObjects/CreateObjects/Objects.xml"
            };
            IApplicationContext context = new XmlApplicationContext(xmlFiles);

IObjectFactory factory = (IObjectFactory)context;

object obj = factory.GetObject("genericClass");
            
            Console.WriteLine(obj.ToString());
        }
    }
}

4.spring对象的创建(静态工厂 实例工厂 泛型,嵌套类型)的更多相关文章

  1. Spring学习--静态工厂方法、实例工厂方法创建 Bean

    通过调用静态工厂方法创建 bean: 调用静态工厂方法创建 bean 是将对象创建的过程封装到静态方法中 , 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不需要关心创建对象的细节. 要声明 ...

  2. [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 【Spring】Spring中的Bean - 2、Baen的实例化 (构造器、静态工厂、实例工厂)

    Bean的实例化 文章目录 Bean的实例化 构造器实例化 静态工厂方式实例化 实例工厂方式实例化 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-S ...

  4. Spring第一课:基于XML装配bean(四),三种实例化方式:默认构造、静态工厂、实例工厂

    Spring中基于XML中的装配bean有三种方式: 1.默认构造 2.静态工厂 3.实例工厂 1.默认构造 在我们在Spring的xml文件中直接通过:     <bean id=" ...

  5. spring学习 四 对象的创建

    spring中,有三种创建对象的方式 (1)构造创建 (2)实例工厂构造 (3)静态工厂构造 一  构造器创建 在构造器创建对象时,有无参构造和有参构造 两种 (1)在spring中,默认的是无参构造 ...

  6. Class对象的创建与使用

    类与Class对象 类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译一个新类的时候就会产生一个Class对象.当程序创建第一个对类的静态成员的引用的时候,会将该类动态加载到JVM中, ...

  7. Java设计模式之简单工厂、工厂方法和抽象工厂

    在前面的学习中(参见前面的博客),我们学到了很多OO原则: 封装变化 多用组合,少用继承 针对接口/超类编程,不针对实现编程 松耦合 开闭原则 让我们从一个简单的类开始,看看如何将之改造成符合OO原则 ...

  8. Spring-02 -Spring 创建对象的三种方式 :1.通过构造方法创建/2.实例工厂/3.静态工厂

    通过构造方法创建  1.1 无参构造创建:默认情况. 1.2 有参构造创建:需要明确配置 1.2.1 需要在类中提供有参构造方法 1.2.2 在 applicationContext.xml 中设置调 ...

  9. Spring(十三):使用工厂方法来配置Bean的两种方式(静态工厂方法&实例工厂方法)

    通过调用静态工厂方法创建Bean 1)调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不需要关心创建对象的具体细节. 2)要声明通过静态 ...

随机推荐

  1. lb集群lvs的3种模式

    Cluster原理 集群的总类: 1.负载均衡集群(LB:Load Banlancing):实现将一个访问量或者任务量特别大的应用,给他 平均分配到不同的服务器上面,以提供高容量.大并发. 2.高可用 ...

  2. leetcode492

    public class Solution { public int[] ConstructRectangle(int area) { Dictionary<int, int> dic = ...

  3. tab form

    procedure TForm2.ToolButton1Click(Sender: TObject); var frm: TForm; begin frm := TForm.Create(Applic ...

  4. 笔记本 T450的鼠标经常不灵

    T450的鼠标经常不灵,鼠标总感觉有延迟. 换了鼠标也是这样. 有人反应说是USB断电, 使用的是省电模式,在设备管理>鼠标>电源选项>节电模式 勾去掉就可以了, 但是我的节点模式是 ...

  5. xe7 c++builder 日期时间头文件函数大全 date

    c++builde r时间日期函数大全,在头文件System.DateUtils.hpp,不过没有IncMonth,因为这个函数定义在System.SysUtils.hpp里头了,唉 date,dat ...

  6. as3 关闭加载流

    /** Loader 取消加载**/ function closeQueueLoader():void { if (cur_loader && cur_loader.contentLo ...

  7. UI5-文档-2.4-Node.js-Based开发环境

    用于修改OpenUI5.环境是基于Node.js,用作服务器,具有一个基于Grunt的构建过程.本节提供关于初始设置.开发工作流和测试执行的信息. 常规开发过程: 不需要构建过程,您可以简单地修改任何 ...

  8. 从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理

    从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理 作者:naaoveGI…    文章来源:naaoveGIS    点击数:1145    更新时间: ...

  9. scrollTop实现图像循环滚动(实例1)

    <html><head><title>scrollTop实现图像循环滚动(实例1)</title><meta http-equiv="C ...

  10. easypanel api 文档

    easypanel api 文档 Easypanel的api通信安全码在easypanel的服务器设置处设置. 接口名称有: add_vh 创建空间和修改空间 update_vh 暂停空间和恢复空间 ...