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 {};
    
}