您的位置:首页 > 编程语言 > Java开发

spring的FactoryBean<T>

2012-06-30 11:50 483 查看
FactoryBean<T>是spring对外提供的对接接口,当向spring对象使用getBean("..")方法时,spring会使用FactoryBean<T>的getObject 方法返回对象。所以当一个类实现的factoryBean<T>接口时,那么每次向spring要这个类时,spring就返回T对象。

注意:当把一个类作为FactoryBean<T>传入FactoryBean的T时,比如:FactoryBean<UserDaoImpl>, 那么就意味着,只要向spring要UserDaoImpl这个对象时,spring就会调用这个FactoryBean的getObject方法来返回,

示例:

package org.vean.services;

import org.springframework.beans.factory.FactoryBean;

public class StringFactoryBean  implements FactoryBean<LogLoginService>{

public LogLoginService getObject() throws Exception {
// TODO Auto-generated method stub
LogLoginService service=new LogLoginService();
System.out.println(11);
return service;
}

public Class<?> getObjectType() {
// TODO Auto-generated method stub
return null;
}

public boolean isSingleton() {
// TODO Auto-generated method stub
return false;
}

}
上面的例子中:StringFactoryBean实现的FactoryBean接口,并把LogLoginService这个类传入了FactoryBean,那么当你每次向spring要StringFactoryBean对象的时候,spring就调用FactoryBean的getObject方法,上面的getObject就时返回LogLoginService这个对象。

注意:当把LogLoginService这个对象传给了FactoryBean接口后,只要是向spring要LogLoginService对象时,spring都会调用FactoryBean的getObject方法。

产生的结果是:1.你向spring要StringFactoryBean,spring就会返回通过getObject方法产生的对象。

                            2.你向spring要LogLoginService,spring 还是同样返回通过getObject产生的对象(重点注意!!)。

小技巧:如果想向spring要对象不向让其返回的时FactoryBean<T>产生的,那么spring对象的getBean("&LogLoginService");返回的是sprig封装的对象,而不是FactoryBean封装的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息