[html]
所以单例模式在Spring中的使用需要额外的注意。
所有代码:
main方法类:
[java]
package beanscope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BeanScopceMain
{
/**
* @comment [注释说明]
* @author 荣磊, 2012-7-17
*
* @param args
*/
public static void main(String[] args)
{
String springConfig = "beanscope/spring-config.xml";
//创建一个SpringContainer
ApplicationContext context = new ClassPathXmlApplicationContext(springConfig);
//通过SpringContainer取得runnerBeanOne
RunnerBeanRefToSingletonBean runnerBeanOne =
context.getBean("runnerBeanOne", RunnerBeanRefToSingletonBean.class);
//通过SpringContainer取得runnerBeanTwo
RunnerBeanRefToSingletonBeanTwo runnerBeanTwo =
context.getBean("runnerBeanTwo", RunnerBeanRefToSingletonBeanTwo.class);
//通过SpringContainer取得singletonBean
SingletonBean singletonBean =
context.getBean("singletonBean", SingletonBean.class);
//输出上一次操作singltonBean的Bean名称,
//因为在这之前没有对singletonBean的lastOperatedBy属性进行初始化,
//所以这里应该会输出none
singletonBean.showLastOperateBean();
//设置runnerBeanOne中singletonBean对象的上一次操作者信息为runnerBeanOne
runnerBeanOne.setMyNameToSingletonBean();
//通过singletonBean输出上一次操作者信息
singletonBean.showLastOperateBean();
//输出runnerBeanTwo中应用的singletonBean对象的上一次操作者信息
runnerBeanTwo.showLastOprBeanOfSingletonBean();
//设置runnerBeanOne中singletonBean对象的上一次操作者信息为runnerBeanTwo
runnerBeanTwo.setMyNameToSingletonBean();
//通过singletonBean输出上一次操作者信息
singletonBean.showLastOperateBean();
//输出runnerBeanOne中应用的singletonBean对象的上一次操作者信息
runnerBeanOne.showLastOprBeanOfSingletonBean();
}
}
SingletonBean类:
[java]
package beanscope;
/**
*
[功能描述]
*
* @author 荣磊
* @version 1.0, 2012-7-17
*/
public class SingletonBean
{
// 用来保存上次操作此Bean的对象
private String lastOperatedBy;
public String getLastOperatedBy()
{
return lastOperatedBy;
}
public void setLastOperatedBy(String lastOperatedBy)
{
this.lastOperatedBy = lastOperatedBy;
}
/**
*
[输出lastOperatedBy属性]
* @author 荣磊, 2012-7-17
*/
public void showLastOperateBean()
{
if(lastOperatedBy!=null)
System.out.println(lastOperatedBy);
else
System.out.println("none");
}
}
RunnerBeanRefToSingletonBean类:
[java]
package beanscope;
public class RunnerBeanRefToSingletonBean
{
private String beanName;
private SingletonBean singletonBean;
public String getBeanName()
{
return beanName;
}
public void setBeanName(String beanName)
{
this.beanName = beanName;
}
public SingletonBean getSingletonBean()
{
return sing