从特性文件到注解的Spring过程值

anauzrmj  于 2023-02-28  发布在  Spring
关注(0)|答案(1)|浏览(81)

我有application.properties文件的Spring应用程序,其中包含一些简单的属性:

queue=my.test.q

在Java代码中,我需要将队列指定为@RabbitListener:

@Component
public class Handler {    
    @RabbitListener(queues = "my.test.q")
    public void handleMessage(Message message) {
       ...
    }

这将工作,但我想传递参数的注解,我已经尝试了以下,但他们都没有工作。

@Component
    public class Handler {
        @Value("${queue}")
        private String queueName;

        @RabbitListener(queues = @Value("${queue}")  <-- not working
        @RabbitListener(queues = queueName))     <--- not working
        public void handleMessage(Message message) {
           ...
        }

这可能吗?

qco9c6ql

qco9c6ql1#

正如您在@RabbitListener注解的javadoc中所看到的,queues属性是一个String表,因此您无法为其分配注解,在Java中也根本无法为注解属性分配变量,因为它们必须是compile constants
我现在无法测试它,但javadoc似乎建议这应该可以工作(注意,它说它可能返回Spel表达式):

@RabbitListener(queues = "${queue}")     
public void handleMessage(Message message) {
    ...
}

相关问题