【发布时间】:2016-06-07 12:30:11
【问题描述】:
我有基于 Spring 的组件,它需要能够通过 JMS 进行通信,并且希望使用 @JmsListener 注释方法来做到这一点。我的侦听器类需要读取 JSON 编码的有效负载,但还需要读取一些自定义标头。
我已经设置了一个@Configuration bean 并将它添加到当前基于 XML 的配置中,我在其中配置了必要的消息转换器。目前我的监听器方法是这样注释的:
@JmsListener(destination = "activemq:queue:queue.name")
public void handleItemCommand(ProvisionItemCommand itemCommand, @Header(AUTH_HEADER_NAME) String auth) {
这一切都有效,但显然队列名称不能硬编码,它需要可配置。更复杂的是,我们使用一些自定义类来读取配置数据,因此使用@PropertySource 和属性文件是不可能的。
我一直卡住的地方是看如何设置,这样才能发生。 Spring 4.2 参考文档告诉我创建和注册一个自定义 PropertySource 类(可以由我们的自定义配置代码支持)但是文档中的示例 (http://docs.spring.io/spring/docs/4.1.9.RELEASE/spring-framework-reference/htmlsingle/#beans-property-source-abstraction) 只是动态创建应用程序上下文并添加自定义属性源。
可能我在这里开发了一个盲点,但是如何创建自定义属性源并将其添加到已经存在的环境中呢?我在网上找到了几个部分示例,但大多数是针对 Spring 3 的,有些似乎是矛盾的。
如果有人能解决这个问题,我将不胜感激,因为我认为我 99% 都在那里,但不知何故最后 1% 未能为我“点击”。
【问题讨论】:
标签: spring configuration spring-jms spring-java-config