Spring入門學習(通過FactoryBean配置Bean) 第十一節
阿新 • • 發佈:2019-01-06
Spring入門學習(通過FactoryBean配置Bean)
Spring中有兩種型別的Bean
- 普通的Bean和工廠Bean,工廠Bean返回的物件不是指類的一個例項,它返回的是該工廠bean的
getObject
方法所返回的物件。 - 建立一個
Car.java
類public class Car { private String brand; private double price; public String getBrand() { return brand; } public
- 建立一個
CarFactoryBean.java
類,實現了FactoryBean<T>
的介面
其中getObject
返回bean的物件,getObjectType
返回bean的型別,isSingleton
表示是否是單例的// 自定義的factorybean需要實現FactoryBean提供的介面 public
- 建立一個
benas-beanfactory.xml
配置檔案<!-- 通過FactoryBean來配置bean的例項 class:指向FactoryBean的全類名 property:配置FactoryBean的屬性 但實際返回的例項卻是FactoryBean的getObject() 方法返回的例項 --> <bean id="car" class="com.fafa.spring.beans.factorybean.CarFactoryBean"> <property name="brand" value="BMW"></property> </bean>
- 建立測試類:
測試結果:public class Main { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:benas-beanfactory.xml"); Car car1 = (Car) ctx.getBean("car"); System.out.println(car1); Car car2 = (Car) ctx.getBean("car"); // 測試是否單例 System.out.println(car1==car2); } }
如果將Car [brand=BMW, price=500000.0] true
CarFactoryBean.java
中的isSingleton
的返回改為false
則兩次獲取的car就不是同一物件為false