Ⅸ.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{ ...
随机推荐
- 统计 iOS 设备锁定、解锁次数-b
今天下了个软件,可以记录手机解锁的次数和使用时间,当然啦,App 必须在后台运行着.当时比较纳闷的是有什么 API 可以接收设备解锁事件或通知的,Google 了下,还真有哎——我是链接:http:/ ...
- iOS 日历类(NSCalendar)
对于时间的操作在开发中很常见,但有时候我们需要获取到一年后的时间,或者一周后的时间.靠通过秒数计算是不行的.那就牵扯到另外一个日历类(NSCalendar).下面先简单看一下 NSDate let d ...
- Automotive Security的一些资料和心得(8):Hardware Security Module (HSM)
1. Introduction - 保护软件的安全性措施,作为值得信赖的安全锚,- 安全地生成,存储和处理安全性关键材料屏蔽任何潜在的恶意软件,?- 通过运用有效的限制硬件篡改攻击的可能性篡改保护措施 ...
- linux 安装Tesseract-OCR
linux 安装Tesseract-OCR 准备工作:一.编译环境: 1. gcc gcc-c++ make(这个环境一般机器都具备,可以忽略) yum install gcc gcc-c++ mak ...
- JS数据类型&&typeof&&其他
1. 5种基本数据类型: 1. String 2. Number 3. Boolean 4. Undefined 5. Null 2. 1种复杂数据类型:Object 3. 检测变量的数据类型:typ ...
- 【弱省胡策】Round #6 String 解题报告
感觉这个题好神啊. 首先我们只管 $a = b$ 的情况,那么我们自然就可以把这个串对 $a$ 取模,然后用 KMP 求出能弄出几个其他的 B 串. 具体就是把串先倍长,然后倒过来,然后求 $Next ...
- about backbone
http://presentation.tiddr.de/backbone-presentation/introduction/index.html#Further%20issues http://m ...
- HDU 5015 233 Matrix
题意:给定一个矩阵的第0列的第1到n个数,第一行第1个数开始每个数分别为233, 2333........,求第n行的第m个数. 分析: 其实也没那么难,自己想了半天还没往对的方向想,m最大1e9,应 ...
- C语言考试解答十题
学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是1 ...
- java中path和classpath
Path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方; CLASSPATH的作用是指定查找类的路径:当使用java命令执行一个类(类中的main方法)时,会从class ...