11.笔记JAVA Spring框架学习————Bean作用域

来源:互联网 发布:windows启动过程与unix 编辑:程序博客网 时间:2024/05/19 05:32

11.笔记JAVA Spring框架学习————Bean作用域

l  在 Spring 中, 可以在<bean> 元素的 scope 属性里设置 Bean 的作用域.

l  默认情况下, Spring只为每个在 IOC 容器里声明的 Bean 创建唯一一个实例, 整个 IOC 容器范围内都能共享该实例:所有后续的 getBean() 调用和 Bean 引用都将返回这个唯一的 Bean 实例.该作用域被称为 singleton,它是所有 Bean 的默认作用域.

如下图1

测试

在app.xml中主要配置代码如下:

      <beanid="car"class="Car"scope="prototype">

            <constructor-argvalue="KUGA"index="1"></constructor-arg>

            <constructor-argvalue="ChangAnFord"index="0"></constructor-arg>

            <constructor-argvalue="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改为如下:

      <beanid="car"class="Car"scope="singleton">

            <constructor-argvalue="KUGA"index="1"></constructor-arg>

            <constructor-argvalue="ChangAnFord"index="0"></constructor-arg>

            <constructor-argvalue="250000"type="float"></constructor-arg>

      </bean>

将scope改成singleton,然后测试执行如下:

Car[company=ChangAnFord, brand=KUGA, maxSpeed=0, price=250000.0]

true

说明了,scope中singleton和prototype的区别。