java 动态配置_java-从配置属性动态设置@JmsListener目标

我希望能够从application.properties设置@JMSlistener目标

我的代码看起来像这样

@Service

public class ListenerService {

private Logger log = Logger.getLogger(ListenerService.class);

@Autowired

QueueProperties queueProperties;

public ListenerService(QueueProperties queueProperties) {

this.queueProperties = queueProperties;

}

@JmsListener(destination = queueProperties.getQueueName() )

public void listenQueue(String requestJSON) throws JMSException {

log.info("Received " + requestJSON);

}

}

但是当我建造时

Error:(25, 60) java: element value must be a constant expression

解决方法:

您不能在当前bean中引用字段,但是可以使用SpEL表达式在应用程序上下文中引用另一个bean …

@SpringBootApplication

public class So49368515Application {

public static void main(String[] args) {

SpringApplication.run(So49368515Application.class, args);

}

@Bean

public ApplicationRunner runner(JmsTemplate template, Foo foo) {

return args -> template.convertAndSend(foo.getDestination(), "test");

}

@JmsListener(destination = "#{@foo.destination}")

public void listen(Message in) {

System.out.println(in);

}

@Bean

public Foo foo() {

return new Foo();

}

public class Foo {

public String getDestination() {

return "foo";

}

}

}

您还可以使用属性占位符${…}.

标签:spring-boot,spring-jms,jmstemplate,java

来源: https://codeday.me/bug/20191109/2012228.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值