我需要在2个不同的类中两次从同一ApplicationContext中获取一个Singleton bean。
片段示例:
CLass A {
public void foo(){
ApplicationContext context = new ClassPathXmlApplicationContext("common.spring.xml");
MyParametrizedSingletonClass myParametrizedSingletonClass = (MyParametrizedSingletonClass) context.getBean("myParametrizedSingletonClass");
// do more stuff..
}
CLass B {
public void bar(){
ApplicationContext context = new ClassPathXmlApplicationContext("common.spring.xml");
MyParametrizedSingletonClass myParametrizedSingletonClass = (MyParametrizedSingletonClass) context.getBean("myParametrizedSingletonClass");
// do more stuff..
}
由于MyParametrizedSingletonClass是单例,因此如果针对相同的构造函数参数多次调用其构造函数,则会引发错误。
如何使用Spring缓存和重用ApplicationContext?
最佳答案
您正在创建两个不同的上下文,因此即使bean是单例的,它也会为每个上下文创建一个实例,
如果要缓存应用程序上下文you can create a class and provide singleton instance of application context