簡體   English   中英

如何在spring容器中一次初始化bean並在各處使用它

[英]how to initialize a bean in spring container once and use it everywhere

實際上,我使用Spring開發Web應用程序時,面臨的問題是,一旦加載Spring容器,我就要初始化一個bean,現在我必須在程序的不同部分中使用該bean。 我具有1.的約束。我可以在任何地方獲取應用程序上下文並獲取該bean,但是根據我的問題,我應該獲取該bean而不必一次又一次地編寫該冗余代碼。因此,有什么方法可以初始化該bean並使用它直接在我程序中的任何地方。

您不應該直接從上下文中獲取bean,而應該@Autowire它們並讓Spring為您注入它。

這是通過構造函數注入的兩個依賴項的示例:

@Component
public class Car {

    private final Engine engine;
    private final Transmission transmission;

    @Autowired
    public Car(Engine engine, Transmission transmission) {
        this.engine = engine;
        this.transmission = transmission;
    }
}

請注意,您的類必須是Spring Component本身,才能進行注入。

在Spring中,實際上有三種類型的依賴項注入:構造函數,字段和setter注入。 Spring團隊建議使用基於構造函數的方法,而本文為這一點帶來了很好的論據: https : //blog.marcnuri.com/field-injection-is-not-recommended/

您可以參考此鏈接以獲取有關基於構造函數的注入的更多信息: https : //www.baeldung.com/constructor-injection-in-spring

如果您已經初始化了bean,則可以從Spring應用程序中的每個組件通過@Autowired訪問它。

private SomeClass myBean;

 @Autowired   
public void setMyBean(SomeClass myBean){
      this.myBean =myBean;
    }

要不就:

@Autowired
private SomeClass myBean;

我更喜歡第一種方法,在我眼中看起來更奇特。

暫無
暫無

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

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