簡體   English   中英

我們如何利用自定義的@Qualifier 方法?

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

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