Spring @AliasFor 与 属性 用于嵌套注释
Spring @AliasFor with property for nested annotation
是否可以让 @AliasFor
注释将参数传递给嵌套注释?类似于将 name()
的值传递给 @RabbitListener
内嵌套的 @Queue
注释?我基本上想为同一个交换器指定多个具有相同绑定参数的队列,并且只改变队列名称。
我认为您不能对嵌套注释执行此操作。您可能需要考虑自定义 @Queue
注释扩展,然后在 @SomeListener
中使用它。但是问题是@Queue
注解无法扩展。它有@Target({})
,所以目前不可能。
如果您真的希望有这样的自定义,请考虑通过 @Target(ANNOTATION_TYPE)
解决 Spring AMQP 问题,并添加一些测试来演示该功能并将其贡献回框架。
不幸的是,我没有看到支持您的请求的其他方式,除非您去声明 Queue
bean 并在您的自定义注释中仅使用它们的名称:
@Retention(RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@RabbitListener
public @interface MyListener {
@AliasFor(annotation = RabbitListener.class, attribute = "queues")
String[] queues() default {};
}
是否可以让 @AliasFor
注释将参数传递给嵌套注释?类似于将 name()
的值传递给 @RabbitListener
内嵌套的 @Queue
注释?我基本上想为同一个交换器指定多个具有相同绑定参数的队列,并且只改变队列名称。
我认为您不能对嵌套注释执行此操作。您可能需要考虑自定义 @Queue
注释扩展,然后在 @SomeListener
中使用它。但是问题是@Queue
注解无法扩展。它有@Target({})
,所以目前不可能。
如果您真的希望有这样的自定义,请考虑通过 @Target(ANNOTATION_TYPE)
解决 Spring AMQP 问题,并添加一些测试来演示该功能并将其贡献回框架。
不幸的是,我没有看到支持您的请求的其他方式,除非您去声明 Queue
bean 并在您的自定义注释中仅使用它们的名称:
@Retention(RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@RabbitListener
public @interface MyListener {
@AliasFor(annotation = RabbitListener.class, attribute = "queues")
String[] queues() default {};
}