目錄
前章講了繼承和依賴,本章將講bean的作用域
一、知識點
bean 的作用域:singleton;prototype;WEB 環境作用域
以下直接通過例子說明
二、默認情況
2.1 創建XML
src右擊-->new-->XML Configuration File-->Spring config-->輸入名字“beans-scope”
<bean id="car" class="com.hualinux.beans.autowire.Car">
<property name="brand" value="寶馬x7"/>
<property name="price" value="1500000"/>
</bean>
2.2 相關代碼
src-->com.hualinux.beans.scope.Main.java
package com.hualinux.beans.scope;
import com.hualinux.beans.autowire.Car;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-scope.xml");
Car car= (Car) ctx.getBean("car");
Car car2= (Car) ctx.getBean("car");
System.out.println(car==car2);
}
}
運行結果:
結果:true
三、prototype
作用域是原型的
修改上面的beans-scope.xml,如下
<bean id="car" class="com.hualinux.beans.autowire.Car" scope="prototype">
<property name="brand" value="寶馬x7"/>
<property name="price" value="1500000"/>
</bean>
<!--
<bean id="car" class="com.hualinux.beans.autowire.Car">
<property name="brand" value="寶馬x7"/>
<property name="price" value="1500000"/>
</bean>
-->
運行com.hualinux.beans.scope.Main.java,結果
false
四、 singleton
修改上面的beans-scope.xml,如下
<bean id="car" class="com.hualinux.beans.autowire.Car" scope="singleton">
<property name="brand" value="寶馬x7"/>
<property name="price" value="1500000"/>
</bean>
運行com.hualinux.beans.scope.Main.java,結果
true
五、總結
使用bean的scope屬性來配置bean的作用域
singleton:默認值。容器初始時創建bean實例。在整個容器生命週期內只創建一個bean單實例
prototype:原型的,容器初始化時不創建bean的實例,而是每次請求時都創建一個新的Bean實例,並返回。