我有 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/