编写带有参数的自定义spring注释?

时间:2019-05-01 21:19:23

标签: spring kotlin spring-amqp

是否可以打开此注释

@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 )

1 个答案:

答案 0 :(得分:0)

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

不过,我不确定您的目标是什么。您用一些@RabbitListener声明一个bindings,其结果将在目标侦听器容器中使用。即使您能够使用queues()来完成设计,也将在容器中使用所有其他队列(例如,通过@AliasFor)。那是您期望的吗?