FactoryBean,InitializingBean使用

Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean。工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象。

使用场景:1、通过外部对类是否是单例进行控制,该类自己无法感知 2、对类的创建之前进行初始化的操作,在afterPropertiesSet()中完成。

实例一:

基础类:Student.java

工厂类:StuFactory.java

注入到配置文件中:

测试:

测试结果:

studentclassinitialized.true

【注意】

1、返回的是getObject()中说明的类型,而不是创建工厂的类型,与普通的javabean不一样

2、创建出来的对象是否属于单例由isSingleton中的返回决定。

实例二:

FactoryBeanDemo.java

配置文件:

测试:

由此可见,虚拟主机,网站空间,通过使用FactoryBean,我们可以得到不同类型的对象实例。这也就是我们在AOP中通过设置calss为ProxyFactoryBean可以返回不同类型的业务对象的原理。在实际应用中若能灵活使用FactoryBean,则可以给应用程序增加很多的魔幻功能。

测试结果:

一个小窍门:FactoryBean还藏有一个技巧,也就是在我们实际需要返回FactoryBean实例时,应该怎么办。也就是我们在应用程序中需要通过容器得到一个FactoryBean。此时,免备案空间,需要使用特殊的方式,即在bean的名称前加上一个特殊符号“&”即可。即:System.out.println(factory.getBean("&myFactoryBean").getClass());

心有多大,舞台就有多大

FactoryBean,InitializingBean使用

相关文章:

你感兴趣的文章:

标签云: