快速上手Spring--6. Singleton的使用与否

来源:百度文库 编辑:神马文学网 时间:2024/07/05 12:24:12
快速上手Spring--6. Singleton的使用与否   上篇文章已经谈了《Spring Framework 开发参考手册》的3.2.4小节——《Bean的标志符(id与name)》,现在继续3.2.5小节——《Singleton的使用与否》。      文档已经把Singleton说的很清楚了,这里也不废话了。主要是了解在Spring中,默认的部署方式是Singleton,没有特别需要的话,一般使用Singleton。    相关软件的配置可以参考《快速上手Spring--2.HelloWorld(1)》。    这里还是以HelloBean为例,这三个文件都放在包javamxj.spring.basic.singleton下。 · HelloBean     这里多加了属性i,用它得到随机数。 HelloBean.java package javamxj.spring.basic.singleton;

public class HelloBean {

    private String helloWorld;

    private int i = (int) (100 * Math.random());

    public HelloBean(String helloWorld) {
        this.helloWorld = helloWorld;
    }

    public void sayHello() {
        System.out.println(helloWorld);
        System.out.println("输出随机整数:  " + i);
    }
}  · 配置文件    在这个Beans中,定义了两个bean,都指向HelloBean类,主要不同就是第二个bean指明了singleton="false",即不采用singleton部署方式。 bean.xml
beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">


    id="singletonBean" class="javamxj.spring.basic.singleton.HelloBean">
       
            Hello! 这是singletonBean!
       

   

   
id="prototypeBean" class="javamxj.spring.basic.singleton.HelloBean"
        singleton="false">
       
            Hello! 这是prototypeBean!
       

   

  · 测试程序:   分别取得singletonBean和prototypeBean各两个实例,然后输出随机数,最后比较同一个bean的两个实例的引用是否相同。 Main.java package javamxj.spring.basic.singleton;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class Main {
    public static void main(String[] args) {

        Resource res = new ClassPathResource("javamxj/spring/basic/singleton/bean.xml");
        BeanFactory factory = new XmlBeanFactory(res);

        HelloBean h1 = (HelloBean) factory.getBean("singletonBean");
        h1.sayHello();       
       
        HelloBean h2 = (HelloBean) factory.getBean("singletonBean");
        h2.sayHello();
       
        System.out.println("h1==h2: " + (h1==h2));
        System.out.println("");
       
       
        HelloBean h3 = (HelloBean) factory.getBean("prototypeBean");
        h3.sayHello();
       
        HelloBean h4 = (HelloBean) factory.getBean("prototypeBean");
        h4.sayHello();
       
        System.out.println("h3==h4: " + (h3==h4));
    }
}    ·运行,控制台输出:Hello! 这是singletonBean!
输出随机整数:  7
Hello! 这是singletonBean!
输出随机整数:  7
h1==h2: true
 Hello! 这是prototypeBean!
输出随机整数:  95
Hello! 这是prototypeBean!
输出随机整数:  60
h3==h4: false
   ·这篇文章和上篇文章的源代码下载(不包含库文件):http://free.ys168.com/?javamxj  Spring目录下面的SpringBasic.zip。