我们考虑一下这种场景,Spring将一个单例类配置Bean,Spring通过Bean的factory-method属性来创建bean。一般来说,单例类的实例只能通过静态工厂方法来创建。
public class SingletonClass {
private static SingletonClass singletonclass= null;
public static SingletonClass getInstance(){
if(singletonclass==null){
singletonclass = new SingletonClass();
}
return singletonclass;
}
public String saySomething(){
return "hello singletonclass";
}
}
<bean id="singletonclass" class="com.zhushuai.spring.SingletonClass" factory-method="getInstance">
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BeanFactory beanfactory = new ClassPathXmlApplicationContext("applicationContext.xml");
SingletonClass singtonClass = (SingletonClass)beanfactory.getBean("singletonclass");
System.out.println(singtonClass.saySomething());
}
}
输出结果: