目录
前章讲了继承和依赖,本章将讲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实例,并返回。