对于Spring FactoryBean的概念,相信大多数人都是非常熟悉,但是真正理会其中妙处,如果没有实际应用,还是比较困难。
首先,是什么情况下使用?在对象初始化化比较复杂的时候,这是一般的回答。但是,更多的时候,是我们使用第三方的类库,但是对方并没有遵守JavaBean的相关规范,这就造成了利用Spring很难进行对象的初始化。例如,Apache HttpClientParams,参数基本没有对应的set方法,更多的是采用setParameter()方法来进行配置。这样,直接采用Spring进行对象实例化,并配置相应的参数是非常困难的。但是使用FactoryBean,困难便迎刃而解。
具体使用是比较简单的,只要实现FactoryBean接口,并实现getObject(), getObjectType(), isSingleton()就可以了。其中最重要的方法是getObject(),你可以根据实际情况定义需要对象的产生过程。
最后,通过FactoryBean产生的对象,并不是FactoryBean的实例,如果要取得FactoryBean实例,需要加$。