Bean的作用域

    默认我们bean的作用域是单例,也就是说每次使用同一个id的对象时,操作的都是同一个对象。

scope="singleton"

    这是默认情况下的值,因此我们可写可不写,在新的配置文件中新建一个<bean>

<bean id="car" class="com.figsprite.bean.autowire.Car"
p:brand="大众" p:price="666" scope="singleton"/>

接着再Main.java测试一下,

  1. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");  
  2. Car car = (Car) ctx.getBean("car");  
  3. Car car2 = (Car) ctx.getBean("car");  
  4.     
  5. System.out.println(car==car2);

发现结果为true,很显然car与car2是指向同一个对象的引用。在整个

scope="prototype"

    我们修改一下scope的值,发现上述代码输出的是false,每次向容器获取Bean时,都会获得一个新对象。

    我们之前提过,在默认情况下,即使我们不在Main.java里显示书写获取Car对象,Spring就会为我们创建一个实例,在整个容器的生命周期内只会创建这一个bean,如果我们将scope改为prototype,则容器初始化时不会创建bean实例,而是在每次请求时都创建一个新的bean实例

posted @ 2019-04-24 15:29  FigSprite  阅读(156)  评论(0编辑  收藏  举报