[英]Is it possible to use multiple @Qualifier annotation in Spring?
我有一組以兩個屬性為特征的bean。 它們基本上是針對不同類和不同目的的序列化器。
例如,有可能是一個Order
本地日志序列化, Order
串行日志記錄Web服務調用, Customer
串行跟蹤URL和Customer
串行跟蹤URL。
這就是為什么我想使用這樣的兩個@Qualifier
注釋:
@Autowired
@Qualifier("order")
@Qualifier("url")
private Serializer<Order> orderSerializer;
不幸的是,編譯器在這種情況下抱怨重復注釋。 是否有解決此問題的解決方法或替代解決方案?
我知道這個問題相當陳舊,但這是自Spring 2.5以來你應該能夠完成的事情。
您可以創建自己的注釋,這些注釋本身使用@Qualifier
注釋,這是一種注釋組合形式。 春天會尊重這些資格賽,好像他們是自己的。
考慮這兩個注釋類型,命名與您的示例類似:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyOrderQualifier {
}
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyUrlQualifier {
}
您應該能夠在您的字段上使用這兩個注釋,因為它們是獨立的注釋。
@Autowired
@MyOrderQualifier
@MyUrlQualifier
private Serializer<Order> orderSerializer;
以下是解釋此過程的Spring 2.5參考文檔的鏈接。 請注意,它適用於Spring 2.5,可能會因更新版本的Spring而過時。
@Qualifier("order-url")
並分別命名您的組件order-url
@Component("order-url")
當然我不知道所有細節,但這個問題更像是Decorator模式的任務。 也許,如果有必要,你可以在Spring配置中綁定它。
或者,我同意Bozho的觀點,你可以在Spring bean中使用一些名稱約定,以便bean名稱可以反映其責任和應用領域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.