我需要在2个不同的类中从同一个ApplicationContext中获取一个单例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?
答案 0 :(得分:2)
您正在创建两个不同的上下文,因此即使bean是单例,它也会为每个上下文创建单个实例,
如果要缓存应用程序上下文you can create a class and provide singleton instance of application context
答案 1 :(得分:0)
Autowire
豆。
默认情况下,spring会将自动装配的bean注入所需的类,并且每次都不会创建新的bean。它们默认为单身。
答案 2 :(得分:0)
在bean名称myParametrizedSingletonClass的common.spring.xml文件中,在xml文件中定义bean时将作用域单例添加到它作为参数