spring中例項化Bean的三種方式
阿新 • • 發佈:2019-02-17
第一種方式:使用預設無參建構函式
在預設情況下:
它會根據預設無參建構函式來建立類物件。如果bean中沒有預設無參建構函式,將會建立失敗。
<bean id="customerService"class="com.ray.service.impl.CustomerServiceImpl"/>
第二種方式:spring管理靜態工廠,–使用靜態工廠的方法建立物件
/**
* 模擬一個靜態工廠,建立業務層實現類
*/
public class StaticFactory {
public static ICustomerService createCustomerService(){
return new CustomerServiceImpl();
}
}
<!-- 此種方式是:
使用StaticFactory類中的靜態方法createCustomerService建立物件,並存入spring容器
id屬性:指定bean的id,用於從容器中獲取
class屬性:指定靜態工廠的全限定類名
factory-method屬性:指定生產物件的靜態方法
-->
<bean id="customerService"
class="com.ray.factory.StaticFactory"
factory-method="createCustomerService" ></bean>
第三種方式:spring管理例項工廠—使用例項工廠的方法建立物件
/**
* 模擬一個例項工廠,建立業務層實現類
* 此工廠建立物件,必須現有工廠例項物件,再呼叫方法
*/
public class InstanceFactory {
public ICustomerService createCustomerService(){
return new CustomerServiceImpl();
}
}
<!-- 此種方式是:
先把工廠的建立交給spring來管理。
然後在使用工廠的bean來呼叫裡面的方法
factory-bean屬性:用於指定例項工廠bean的id。
factory-method屬性:用於指定例項工廠中建立物件的方法。
-->
<bean id="instancFactory" class="com.ray.factory.InstanceFactory"></bean>
<bean id="customerService"
factory-bean="instancFactory"
factory-method="createCustomerService"></bean>