簡體   English   中英

在春季訪問緩存的ApplicationContext

[英]Accessing cached ApplicationContext in spring

我需要在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是單例的,它也會為每個上下文創建一個實例,

如果要緩存應用程序上下文,則可以創建一個類並提供應用程序上下文的單例實例

Autowire bean。

默認情況下,spring會將自動裝配的bean注入所需的類中,並且不會每次都創建新的bean。 它們默認為單例。

在bean名稱myParametrizedSingletonClass的common.spring.xml文件中,在xml文件中定義bean的同時,將范圍單例作為參數添加到其中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM