在spring中访问缓存的ApplicationContext

时间:2014-06-18 05:48:37

标签: java spring

我需要在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?

3 个答案:

答案 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时将作用域单例添加到它作为参数