spring从属性文件传递值到注释

时间:2015-08-20 19:33:24

标签: java spring

我有spring app的application.properties文件,其中包含一些简单的属性:

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) {
           ...
        }    

有可能吗?

1 个答案:

答案 0 :(得分:9)

正如您在javadoc for the @RabbitListener annotation中看到的,队列属性是一个字符串表,因此您无法为其指定注释。您也无法在Java中为注释属性分配变量,因为它们必须是compile constants

我现在无法测试它,但javadoc似乎暗示这应该有用(注意,它说它可能会返回SpEL表达式):

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