spring中的bean標簽詳解


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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM