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方法来返回,
示例:
注意:当把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封装的。
注意:当把一个类作为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封装的。
相关文章推荐
- <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
- Spring中org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>解决方法.
- spring mvc +jdbctemplate 返回多表查询List<Bean>
- freemarker与spring整合中.<bean>的配置.主要看相对路径
- Spring <bean>标签属性 Autowire自动装配
- Spring InitializingBean和ApplicationListener<ContextRefreshedEvent>
- spring-boot中可以注入 ObjectFactory<HttpMessageConverters>
- Spring配置中<bean>的id和name属性区别
- Spring <bean> 参数意义
- Spring中<ref local=""/>与<ref bean=""/>区别
- Spring中<ref local=""/>与<ref bean=""/>区别
- Spring 给bean配置list<bean>列表参数
- Spring <bean>标签属性 Autowire自动装配
- SPRING IN ACTION 第4版笔记-第十一章Persisting data with object-relational mapping-002设置JPA的EntityManagerFactory(<persistence-unit>、<jee:jndi-lookup>)
- Spring中<ref local=""/>与<ref bean=""/>区别
- spring 自动注入bean,不用一个一个去配置<bean/>的方法
- 我对Spring中<bean>的理解
- Spring <bean>标签属性 Autowire自动装配
- 从头认识Spring-2.7 自己主动检測Bean(2)-过滤器<context:include-filter/>
- Spring配置<bean>时加scope="prototype"的原因