spring中的bean標籤詳解
阿新 • • 發佈:2020-10-14
spring中的bean標籤詳解
1、作用
用於配置物件讓spring來建立的,預設情況下它呼叫的是類中的無參建構函式,如果沒有無參建構函式則不能建立成功。
2、屬性
- id:給物件在容器中提供一個唯一標識。用於獲取物件。
- class:指定類的全限定類名。用於反射建立物件。預設情況下呼叫無參建構函式。
- scope:指定物件的作用範圍。
- singleton:預設值,單例的
- prototype:多例的
- request:WEB專案中,Spring建立一個Bean的物件,將物件存入到request域中
- session:WEB專案中,Spring建立一個Bean的物件,將物件存入到session域中
- globalSession:WEB專案中,應用在Portlet環境.如果沒有Portlet環境那麼globalSession相當於session
- init-method:指定類中的初始化方法名稱
- destroy-method:指定類中銷燬方法名稱
3、bean的作用範圍和生命週期
- 單例物件:scope="singleton":一個應用只有一個物件的例項。它的作用範圍就是整個引用。
- 生命週期
- 物件出生:當應用載入,建立容器時,物件就被建立了。
- 物件活著:只要容器在,物件一直活著。
- 物件死亡:當應用解除安裝,銷燬容器時,物件就被銷燬了。
- 生命週期
- 多例物件:scope="prototype":每次訪問物件時,都會重新建立物件例項。
- 生命週期
- 物件出生:當使用物件時,建立新的物件例項。
- 物件活著:只要物件在使用中,就一直活著。
- 物件死亡:當物件長時間不用時,被java的垃圾回收器回收了。
- 生命週期
4、例項化bean的三種方式
4.1、方式一
<!--在預設情況下:它會根據預設無參建構函式來建立類物件。如果bean中沒有預設無參建構函式,將會建立失敗-->
<bean id="customerService" class="com.itheima.service.impl.CustomerServiceImpl"/>
4.2、方式二
/** * 模擬一個靜態工廠,建立業務層實現類 */ public class StaticFactory { public static ICustomerService createCustomerService(){ return new CustomerServiceImpl(); } }
<!-- 此種方式是:
使用StaticFactory類中的靜態方法createCustomerService建立物件,並存入spring容器
id屬性:指定bean的id,用於從容器中獲取
class屬性:指定靜態工廠的全限定類名
factory-method屬性:指定生產物件的靜態方法
-->
<bean id="customerService"
class="com.itheima.factory.StaticFactory"
factory-method="createCustomerService"></bean>
4.3、方式三
/**
* 模擬一個例項工廠,建立業務層實現類
* 此工廠建立物件,必須現有工廠例項物件,再呼叫方法
*/
public class InstanceFactory {
public ICustomerService createCustomerService(){
return new CustomerServiceImpl();
}
}
<!-- 此種方式是:
先把工廠的建立交給spring來管理。
然後在使用工廠的bean來呼叫裡面的方法
factory-bean屬性:用於指定例項工廠bean的id。
factory-method屬性:用於指定例項工廠中建立物件的方法。
-->
<bean id="instancFactory" class="com.itheima.factory.InstanceFactory"></bean>
<bean id="customerService"
factory-bean="instancFactory"
factory-method="createCustomerService"></bean>