簡體   English   中英

如果byName失敗,則將默認bean設置為自動裝配

[英]Set a default bean to autowire if byName fails

我有許多IO類,它們都需要將PKI信息(密鑰和信任庫)自動連接到它們,以便它們可以建立連接。 當前,我們在所有地方都使用相同的PKI信息,但最終可能希望為不同的接口使用不同的PKI。

由於這個原因,我希望能夠在每個接口中@autowire byName,為每個PKI允許一個唯一的名稱,如果以后我想要唯一的PKI,可以稍后決定通過xml進行注入,而且在默認情況下還可以自動將我的單個'main '如果找不到自動接線名稱,則提供PKI信息(因為我還不需要定義唯一的PKI bean而不是該實例的默認值)。

我相信,如果我只有一個Keystore bean,那么這很好用,但是我不確定如果有兩個Keystore bean會發生什么。

假設我在三個地方為我的密鑰庫自動裝配,名稱分別為foo,bar和baz。 我最初注冊了一個keystore bean,我認為所有的全局bean都與byName無關,因為僅存在一種類型。

然后,我添加一個名為foo的密鑰庫bean,應將其自動連接到設置了byName = foo的密鑰庫中。 但是,如何確保尚未定義適當名稱的bean的bar和baz密鑰庫仍然知道要回滾到加載“默認”密鑰庫?

如果我對您的理解正確,應該是這樣。

public interface Keystore{}

@Component("keystoreImplFirst")
public class KeystoreImplFirst implements Keystore{}

@Component("keystoreImplSecond")
public class KeystoreImplSecond implements Keystore{}

然后的用法:

@Autowired
@Qualifier("keystoreImplFirst")
Keystore keystore;

您也可以使用@Resource批注,但請記住,該名稱將根據您的變量名稱進行解析。 您可以在此處找到更多說明和示例LINK

@Resource
Keystore keystoreImplFirst

暫無
暫無

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

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