首页 > 解决方案 > 编写带有参数的自定义弹簧注释?

问题描述

可以转这个注解吗

@RabbitListener(
    bindings = [QueueBinding(
        key = [Amqp.FOLEY_NEW],
        value = Queue(Amqp.FOLEY_NEW),
        exchange = Exchange(name = "amq.topic", type = ExchangeTypes.TOPIC  )
    )]
)

进入一个简单地将队列名称作为参数的自定义注释?

试一试,但我看不出我可以参考Listener.value

@Target(AnnotationTarget.FUNCTION)
@Retention
@RabbitListener(
    bindings = [QueueBinding(
        key = [Amqp.FOLEY_NEW],
        value = Queue(Amqp.FOLEY_NEW),
        exchange = Exchange(name = "amq.topic", type = ExchangeTypes.TOPIC  )
    )]
)
annotation class Listener( val value: String )

标签: springkotlinspring-amqp

解决方案


它不会起作用,因为自定义注释必须以某种方式引用元注释。@RabbitListener没有value()属性。尽管您可以尝试使用@AliasFor. 有关更多信息,请参阅其 JavaDocs。

不过,我不确定您的目标。您声明 a @RabbitListenerwith some bindings,其结果将在目标侦听器容器中使用。queues()即使您能够使用@AliasFor. 这是你所期望的吗?


推荐阅读