Ⅸ.spring的点点滴滴--IObjectFactory与IFactoryObject的杂谈
承接上文
ObjectFactory与IFactoryObject的杂谈
.net篇(环境为vs2012+Spring.Core.dll v1.31)
public class parent {
public string Name { get; set; }
public int Age { get; set; }
}
public class CustomFactory :
Spring.Objects.Factory.IFactoryObject
{
public object GetObject(){
return "1";
}
public bool IsSingleton{
get { return false; }
}
public Type ObjectType{
get { return typeof(string); }
}
}<object id="p1" type="SpringBase.parent,SpringBase">
<property name="Name" value="cnljli" />
<property name="Age" value="1"/>
</object>
<object id="p2" type="SpringBase.parent,SpringBase" singleton="false" >
<property name="Name" value="cnljli" />
<property name="Age" value="1"/>
</object>
<object id="customFac" type="SpringBase.CustomFactory, SpringBase"/>
- 可以直接调用xml配置文件来返回一个工厂
Spring.Core.IO.IResource input = new Spring.Core.IO.FileSystemResource("factory.xml");
Spring.Objects.Factory.Xml.XmlObjectFactory factory =
new Spring.Objects.Factory.Xml.XmlObjectFactory(input);- 可以通过xml文件里面的配置为程序的实例注入,
第一个参数为实例的引用地址,第二个参数为xml文件的idparent ioc = new parent();
factory.ConfigureObject(ioc, "p1");
java篇(环境为Maven+Jdk1.7+IntelliJ IDEA 12.1.4)
package springdemo;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;
public class Parent {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
class CustomFactory implements FactoryBean<String>{
@Override
public String getObject() throws Exception {
return "1";
}
@Override
public Class<?> getObjectType() {
return String.class;
}
@Override
public boolean isSingleton() {
return false;
}
}<bean id="p1" class="springdemo.Parent">
<property name="name" value="cnljli-p1" />
<property name="age" value="1" />
</bean>
<bean id="p2" class="springdemo.Parent" singleton="false">
<property name="name" value="cnljli-p2" />
<property name="age" value="1" />
</bean>
<bean id="customFac" class="springdemo.CustomFactory" />
java和Csharp的共同点
- 如果没有显式指定,对象的布署模式默认为singleton,即当修改一个实例化,再次通过id获取,
为修改后的实例- 实现IFactoryObject|FactoryBean接口的对象也可以获取这个工厂
不一定是这个工厂创建的实例,通过在id前面加上&符号
- 下一篇:Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)
- 上一篇:Ⅷ.spring的点点滴滴--抽象对象和子对象
- 本文链接地址:Ⅸ.spring的点点滴滴--IObjectFactory与IFactoryObject的杂谈
Ⅸ.spring的点点滴滴--IObjectFactory与IFactoryObject的杂谈的更多相关文章
- Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)
承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...
- Ⅷ.spring的点点滴滴--抽象对象和子对象
承接上文 抽象对象和子对象 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class parent { public string Name { get; ...
- Ⅶ.spring的点点滴滴--自定义对象行为
承接上文 自定义对象行为 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class lifeCycle : Spring.Objects.Factory. ...
- Ⅳspring的点点滴滴--方法和事件
承接上文 方法和事件 .net篇(环境为vs2012+Spring.Core.dll v1.31) public abstract class MethodDemo { protected abstr ...
- Ⅲ.spring的点点滴滴--赋值
承接上文 对象的赋值(调用方式都一样不再阐述) .net篇(环境为vs2012+Spring.Core.dll v1.31) public class PropertyDemo{ public Sys ...
- Ⅱ.spring的点点滴滴--对象
承接上文 对象的各种实例化 .net篇(环境为vs2012+Spring.Core.dll) 修改原来的PersonDao对象为 public class PersonDao : IPersonDao ...
- Ⅰ.Spring的点点滴滴--序章
spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 .net篇(环境为vs2012+Spring.Core.dll) 新建一个控制台 using Spring.Context; ...
- XI.spring的点点滴滴--IObjectFactoryPostProcessor(工厂后处理器)
承接上文 IObjectFactoryPostProcessor(工厂后处理器)) 前提是实现接口的对象注册给当前容器 直接继承的对象调用这个postProcessBeanFactory方法,参数为工 ...
- Ⅵ.spring的点点滴滴--自定义类型转换器
承接上文 自定义类型转换器 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class CustomeConverter : TypeConverter{ ...
随机推荐
- python 进程信息
通过psutil模块读取机器进程信息: #-*- coding: UTF-8 -*-import psutil;import osimport CommMethod '''获取机器当前进程信息'''d ...
- 在C#中关于excel的导入和导出操作
一.先来看看最常见的导入操作吧! private void Import() { //打开excel选择框 OpenFileDialog frm = new OpenFileDialog(); frm ...
- Linux查看用户和组命令
在Linux系统里,我们会经常用Linux查看用户的命令,在这里我们一些命令进行了总结,总共有7个,并做了详细的解释,以便让大家更深入的理解,接下来让我们一起来看看这些命令和具体应用. 一.Linux ...
- 关于对js的this的几点理解
四种不同模式小调用的指向 1.函数调用模式的时候,this指向window 2.方法调用模式的时候,this指向方法所在的对象 3.构造函数模式的时候,this指向新生成的实例 4.apply/cal ...
- Java 开发者不容错过的 12 种高效工具
Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...
- 实现SELECT的全选,反选,AB选的JAVASCRIPT代码
参考网上,用原生JS粗糙实现. 我发现用UIKIT的BUTTON会自动刷新我那核心的模态窗口,只好用另外的LABEL或CODE标签了. $(".btn-select-all").c ...
- background image position问题
在CSS中,背景图片的定位方法有3种: 1)关键字:background-position: top left; 2)像素:background-position: 0px 0px; 3)百分比:ba ...
- PHP FTP上传文件
第一步:建立一个新的 FTP 连接. ftp_connect(host,port,timeout); host必需,规定要连接的 FTP 服务器,可以是域名或 IP 地址,后面不应以斜线结 ...
- 360手机助手内部资料曝光,63张PPT纯干货
360手机助手内部资料曝光,63张PPT纯干货 日前,国内最大的安卓应用商店360手机助手发布了<2016年手机软件行业趋势绿皮书>,这份绿皮书对2015年以来移动互联网的趋势做了总结,展 ...
- JAVA - Blowfish加密出现java.security.InvalidKeyException: Illegal key size 解决方案
最近用java进行一个blowfish的加密算法,但是在我们的eclipse上报出Illegal key size的错误.google后发现原因是:ymmetricDS加密symmetric.prop ...