spring中FactoryBean淺析
阿新 • • 發佈:2018-11-14
參考:https://blog.csdn.net/baidu_19473529/article/details/80558996
基本概念
FactoryBean是一個Java bean,但是和普通的javabean不太一樣,他是能生產出當前物件的工廠bean。
基本使用
FactoryBean是一個介面,建立類實現此介面,如下:
package test; import org.springframework.beans.factory.FactoryBean; /** * * @author */ public class MyTestBean implements FactoryBean<MyTestBean> { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } //返回由FactoryBean建立的bean例項,如果isSingleton()返回true,則該例項會放到Spring容器中單例項快取池中。 @Override public MyTestBean getObject() throws Exception { MyTestBean bean = new MyTestBean(); bean.setName("Tom"); return bean; } //返回FactoryBean建立的bean型別。 @Override public Class<?> getObjectType() { return MyTestBean.class; } //返回由FactoryBean建立的bean例項的作用域是singleton還是prototype。 @Override public boolean isSingleton() { return true; } }
然後將此bean像普通bean一樣配置在spring配置檔案中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd " >
<bean id ="myTestBean" class= "test.MyTestBean" > </bean>
</beans>
獲取applicationContext容器之後,通過getBean(“myTestBean”)獲取的是類MyTestBean的getObject()返回的值是帶有name是Tom的bean,要想獲取MyTestBean類物件,則在通過在bean的id前加&的符號方式獲取,即getBean(“&myTestBean”)可獲取