gpt4 book ai didi

java - 是否可以在 Spring 中使用多个 @Qualifier 注解?

转载 作者:搜寻专家 更新时间:2023-11-01 01:09:21 27 4
gpt4 key购买 nike

我有一组具有两个属性的 bean。它们基本上是用于不同类和不同目的的序列化程序。

例如,可能有用于本地日志的 Order 序列化器,用于记录 web 服务调用的 Order 序列化器,用于跟踪 URL 的 Customer 序列化器和Customer 用于跟踪 URL 的序列化程序。

这就是为什么我想像这样使用两个 @Qualifier 注释:

@Autowired
@Qualifier("order")
@Qualifier("url")
private Serializer<Order> orderSerializer;

不幸的是,在这种情况下,编译器会提示重复注释。此问题是否有任何变通方法或替代解决方案?

最佳答案

我知道这个问题很老了,但这是自 Spring 2.5 以来你应该能够完成的事情。

您可以创建自己的注释,这些注释本身使用 @Qualifier 进行注释,这是一种注释组合形式。 Spring 将尊重这些限定符,就好像它们是它们自己的一样。

考虑这两种注释类型,其命名与您的示例类似:

@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 reference documentation 的链接解释这个过程。请注意,它适用于 Spring 2.5,对于更新版本的 Spring 可能已经过时。

关于java - 是否可以在 Spring 中使用多个 @Qualifier 注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3512546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com