zoukankan      html  css  js  c++  java
  • 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~
  • 相关阅读:
    多进程编程
    Python 的下载安装
    cnBlogs windows LIves Writes 安装
    第四章网页文字编排设计
    第三章网页图形图像设计
    第二章网页创意设计思维和方法
    1.3-1.4网页设计的定位和流程
    1.2网页设计的构成要素和特性
    网页编辑常用快捷方式+学习技巧+网站开发流程
    css选择器2——伪类选择器
  • 原文地址:https://www.cnblogs.com/zhzcode/p/9622436.html
Copyright © 2011-2022 走看看