[英]How can we utilize the custom @Qualifier methods?
我有多個關於如何實現/使用注釋方法的問題。
我們如何利用限定符的方法? 假設我有一個自定義@Qualifier
即。 @Store
代表一個 AppStore,有 2 個方法。 如何使用傳遞給DeviceType deviceType()
的值?
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Store {
String value();
DeviceType deviceType() default DeviceType.Phone;
public enum DeviceType{
Phone, Tablet;
}
}
@Qualifier
如何在內部使用String value()
來匹配名稱? 創建自定義@Qualifier
時是否會被String value()
覆蓋?
---更新信息如下---
我有一個包含 AppStore 類型字段的服務,該字段具有 @Autowired 和 @Store 注釋。 獲取 iPadAppStoreService 的 bean 后,如何訪問注解中的 deviceType 傳遞?
@Service
public class iPadAppStoreService {
....
@Autowired(required=false)
@Store(value = "appleAppStore",
deviceType = DeviceType.Tablet)
private AppStore applicationStore;
....
}
我們如何利用限定符的方法?
你打電話給他們。
假設我有一個自定義
@Qualifier
即。@Store
代表一個 AppStore,有 2 個方法。 如何使用傳遞給DeviceType deviceType()
的值?
Store storeAnnotation = clazz.getAnnotation(Store.class);
DeviceType deviceType = storeAnnotation.deviceType();
其中clazz
是已用 @Store 注釋的@Store
。
@Qualifier
如何在內部使用String value()
來匹配名稱?
如果@Autowired
字段/方法/參數按類型找到多個候選者,並且還有一個@Qualifier
注釋(或類似@Store
的派生注釋),它將查找已使用@Qualifier
注釋並具有匹配value
的候選類型元素。
創建自定義
@Qualifier
時是否會被String value()
覆蓋?
是的, @Store
注釋的處理方式與@Qualifier
注釋相同,即其元素值的使用方式相同。 Spring 會忽略任何額外的元素值,並且只會被您添加的代碼使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.