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

标签 java spring

我有 spring 应用程序的 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) {
           ...
        }    

这可能吗?

最佳答案

正如您在 javadoc for the @RabbitListener annotation 中看到的那样, queues 属性是一个字符串表,所以你不能给它分配一个注解。您也不能在 Java 中将变量分配给注释属性,因为它们必须是 compile constants。 .

我现在无法对其进行测试,但 javadoc 似乎表明这应该有效(请注意,它说它可能会返回 SpEL 表达式):

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

关于java - spring 将值从属性文件传递到注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126836/

相关文章:

java - 如何在 java 中的字符串中找到 '|' 模式?

java - spring-ws -- 如何从 WSDL 创建 java 接口(interface)?

java - 切入点引用名称开头的所有方法

java - Spring boot java,在另一个属性中使用一个属性

spring - 与Flyway的集成测试

java - 如何检查两个或多个键是否映射到相同的值?

Java : ServletContext not avaliable in Eclipse (IDE FOR EE)

java - 在 Java 中复制 Unix 排序的默认行为

多个 equals 和 if 的 Java 哈希码实现

java - 我可以在 Spring Security 中有多个配置来保护 Web 应用程序和 Rest API 吗?