4.spring对象的创建(静态工厂 实例工厂 泛型,嵌套类型)
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<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对象的创建(静态工厂 实例工厂 泛型,嵌套类型)的更多相关文章
- Spring学习--静态工厂方法、实例工厂方法创建 Bean
通过调用静态工厂方法创建 bean: 调用静态工厂方法创建 bean 是将对象创建的过程封装到静态方法中 , 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不需要关心创建对象的细节. 要声明 ...
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 【Spring】Spring中的Bean - 2、Baen的实例化 (构造器、静态工厂、实例工厂)
Bean的实例化 文章目录 Bean的实例化 构造器实例化 静态工厂方式实例化 实例工厂方式实例化 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-S ...
- Spring第一课:基于XML装配bean(四),三种实例化方式:默认构造、静态工厂、实例工厂
Spring中基于XML中的装配bean有三种方式: 1.默认构造 2.静态工厂 3.实例工厂 1.默认构造 在我们在Spring的xml文件中直接通过: <bean id=" ...
- spring学习 四 对象的创建
spring中,有三种创建对象的方式 (1)构造创建 (2)实例工厂构造 (3)静态工厂构造 一 构造器创建 在构造器创建对象时,有无参构造和有参构造 两种 (1)在spring中,默认的是无参构造 ...
- Class对象的创建与使用
类与Class对象 类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译一个新类的时候就会产生一个Class对象.当程序创建第一个对类的静态成员的引用的时候,会将该类动态加载到JVM中, ...
- Java设计模式之简单工厂、工厂方法和抽象工厂
在前面的学习中(参见前面的博客),我们学到了很多OO原则: 封装变化 多用组合,少用继承 针对接口/超类编程,不针对实现编程 松耦合 开闭原则 让我们从一个简单的类开始,看看如何将之改造成符合OO原则 ...
- Spring-02 -Spring 创建对象的三种方式 :1.通过构造方法创建/2.实例工厂/3.静态工厂
通过构造方法创建 1.1 无参构造创建:默认情况. 1.2 有参构造创建:需要明确配置 1.2.1 需要在类中提供有参构造方法 1.2.2 在 applicationContext.xml 中设置调 ...
- Spring(十三):使用工厂方法来配置Bean的两种方式(静态工厂方法&实例工厂方法)
通过调用静态工厂方法创建Bean 1)调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不需要关心创建对象的具体细节. 2)要声明通过静态 ...
随机推荐
- CUDA C Programming Guide 在线教程学习笔记 Part 10【坑】
▶ 动态并行. ● 动态并行直接从 GPU 上创建工作,可以减少主机和设备间数据传输,在设备线程中调整配置.有数据依赖的并行工作可以在内核运行时生成,并利用 GPU 的硬件调度和负载均衡.动态并行要求 ...
- centos7修改ssh默认登陆端口号
参考网站; https://blog.csdn.net/ausboyue/article/details/53691953 第一步:修改SSH配置文件(注意是sshd_config而不是ssh_con ...
- SpringMVC 之@RequestBody 接收Json数组对象
1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台 ...
- Delegate 改变指向
import mx.utils.Delegate; nowWordSound.onSoundComplete =Delegate.create(this, playOver); function pl ...
- 10 python 封装----@property的用法
1.基本概念 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A ...
- React 简单介绍
React 简单介绍 作者 RK_CODER 关注 2014.12.10 17:37* 字数 2516 阅读 55715评论 6喜欢 70 why React? React是Facebook开发的一款 ...
- 趣味编程:CPS风格代码(C#,F#版)
CPS风格代码(C#版) using System; namespace fp { class CPS { static int add(int x, int y) => x + y; stat ...
- Session保存数据
int nameid=dao.isLegalUser(name, password);/ /方法返回int数据 request.setAttribute("nam ...
- hadoop 官方配置文件解析
比如我的版本是2.8.4 官网文档是: http://hadoop.apache.org/docs/r2.8.4/ 基本配置文件:包括一般的端口 hdfs-default.xml dfs.nameno ...
- CentOS 下安装 OpenOffice4.0
一.更新服务器 yum源 [root@APP2 /]# yum clean all [root@APP2 /]# yum makecache [root@APP2 /]# yum update 1.首 ...