首先,我检查了发布新问题时出现的一些可能的答案,但没有发现我遇到的问题。
我有一个Spring MDP可以很好地工作,即可以接收消息。问题是当我尝试自动装配依赖时,自动装配似乎不起作用。我正在使用Netbeans和Glassfish 3.1.2,所以我能够逐步执行代码并确认依赖项为空。在应用程序的其他部分自动装配工作正常。 MDP在组件扫描中被选中。
我使用了来自springsource的示例来创建我的MDP: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jms.html
我已经通过setter方法自动化了依赖项。
我无法弄清楚为什么这不起作用。我查了一下,我认为没有其他人有这个问题。
任何想法,正确方向的指示,我可以参考的例子都将非常感激。
感谢。
KSS
MDP课程:
public class ExampleListener implements MessageListener {
private Transformer transformer;
private MurexService murexService;
@Autowired
public void setTransformer(Transformer transformer) {
this.transformer = transformer;
}
@Autowired
public void setMurexService(MurexService murexService) {
this.murexService = murexService;
}
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException ex) {
throw new RuntimeException(ex);
}
}
}
}
的ApplicationContext:
<jee:jndi-lookup id="connectionFactory" jndi-name="jms/QueueConnectionFactory" />
<jee:jndi-lookup id="testQueueOne" jndi-name="jms/ITFS_RECEIVE" />
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="com.scm.service.ExampleListener" />
<!-- and this is the message listener container -->
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="testQueueOne"/>
<property name="messageListener" ref="messageListener" />
</bean>
答案 0 :(得分:3)
需要在@Autowired字段中注册AutowiredAnnotationBeanPostProcessor进行连线。 javadoc有更多细节。有关类似问题的解决方案,请参阅here。
基本上添加这个应该让自动装配起作用:
<context:annotation-config/>