11.笔记JAVA Spring框架学习————Bean作用域
11.笔记JAVA Spring框架学习————Bean作用域
l 在 Spring 中, 可以在<bean> 元素的 scope 属性里设置 Bean 的作用域.
l 默认情况下, Spring只为每个在 IOC 容器里声明的 Bean 创建唯一一个实例, 整个 IOC 容器范围内都能共享该实例:所有后续的 getBean() 调用和 Bean 引用都将返回这个唯一的 Bean 实例.该作用域被称为 singleton, 它是所有 Bean 的默认作用域.
如下图1:
测试
在app.xml中主要配置代码如下:
<bean id="car"class="Car" scope="prototype">
<constructor-arg value="KUGA"index="1"></constructor-arg>
<constructor-arg value="ChangAnFord"index="0"></constructor-arg>
<constructor-arg value="250000"type="float"></constructor-arg>
</bean>
Main.java中代码如下:
import java.util.Locale.Category;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
publicstatic void main(String[] args) {
//1.创建 Spring 的 IOC 容器
ApplicationContextapx = new ClassPathXmlApplicationContext("app.xml");
Carcar = (Car) apx.getBean("car");
System.out.println(car);
Carcar2 = (Car) apx.getBean("car");
System.out.println(car== car2);
}
}
输出如下:
Car[company=ChangAnFord, brand=KUGA, maxSpeed=0, price=250000.0]
false
测试二
将app.xml改为如下:
<bean id="car"class="Car" scope="singleton">
<constructor-arg value="KUGA" index="1"></constructor-arg>
<constructor-arg value="ChangAnFord" index="0"></constructor-arg>
<constructor-arg value="250000" type="float"></constructor-arg>
</bean>
将scope改成singleton,然后测试执行如下:
Car[company=ChangAnFord, brand=KUGA, maxSpeed=0, price=250000.0]
true
说明了,scope中singleton和prototype的区别。