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~
  • 相关阅读:
    chrome 等浏览器不支持本地ajax请求的问题
    3:1 类型转换
    WebService-WSDL简单介绍
    WebService—CXF整合Spring实现接口发布和调用过程
    WebService—CXF—实现接口发布和客户端调用
    WebService—规范介绍和几种实现WebService的框架介绍
    (转)c# 扩展方法
    (转)C# Textbox的ImeMode取值对中文输入法的影响
    (转)Nandflash读写
    (转+整理)Nandflash存储
  • 原文地址:https://www.cnblogs.com/zhzcode/p/9622436.html
Copyright © 2011-2022 走看看