Bean的作用域

【Bean的作用域:singleton;prototype;WEB环境作用域】

【singleton】

beans-scope.xml:

1    <!-- 
2        使用bean的scope属性来配置bean的作用域
3        singleton:默认值,容器初始化时创建bean实例,在整个容器的生命周期内只创建这一个bean,单例的。
4    -->
5    <bean id="car" class="com.hk.beans.autowire.Car" scope="singleton">
6       <property name="brand" value="Audi"></property>
7       <property name="price" value="300000"></property>
8    </bean>

Main.java:

1 public class Main {
2     public static void main(String[] args) {
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");
4         Car car = (Car) ctx.getBean("car");
5         Car car2 = (Car) ctx.getBean("car");
6         System.out.println(car == car2);
7     }
8 }

运行结果:

注释掉测试方法中的4,5,6行代码:

Main.java:

1 public class Main {
2     public static void main(String[] args) {
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");
4 //        Car car = (Car) ctx.getBean("car");
5 //        Car car2 = (Car) ctx.getBean("car");
6 //        System.out.println(car == car2);
7     }
8 }

运行结果:

说明:在我们创建容器的时候,这个bean已经被初始化好了。下次我们从容器中获取bean的时候都会返回这个已经创建好的bean。

【prototype(原型的)】

beans-scope.xml:

1    <bean id="car" class="com.hk.beans.autowire.Car" scope="prototype">
2       <property name="brand" value="Audi"></property>
3       <property name="price" value="300000"></property>
4    </bean>

注释掉测试方法中的4,5,6行代码:

1 public class Main {
2     public static void main(String[] args) {
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");
4 //        Car car = (Car) ctx.getBean("car");
5 //        Car car2 = (Car) ctx.getBean("car");
6 //        System.out.println(car == car2);
7     }
8 }

运行结果:

没有创建任何bean。

当把Car car = (Car) ctx.getBean("car");的代码加上时,运行结果如下:

当把Car car2 = (Car) ctx.getBean("car");代码加上时,运行结果:

把System.out.println(car == car2);代码加上,运行结果如下:

说明:容器初始化时,不创建bean的实例,而在每次请求时都创建一个新的bean实例并返回。

在struts2和Spring整合时,在struts的action的那个地方用的较多。

每接触一个新领域,我就像一块掉进水里的海绵,四面八方的养分都让我不断充实。O(∩_∩)O~
原文地址:https://www.cnblogs.com/zhzcode/p/9622436.html