[英]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.