SpringMVC,MessageListener和Injection

时间:2016-02-28 15:59:21

标签: spring redis code-injection

无论如何在MessageListener中注入服务?

  @Autowired
  @Qualifier("myServices")

  MyServices myServices;

  @Override
  public void onMessage(final Message message, final byte[] pattern) {
    myServices.call(); 
}

这种方式不会注入服务。那是因为@Configuration中我们做了

    @Bean
MessageListenerAdapter messageListener() {
    return new MessageListenerAdapter( new RedisMessageListener() );
}

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

这应该有效:(如果委托已经是MessageListener,则不需要MessageListenerAdapter):

@Component
public class MyListener implements MessageListener {
  @Autowired
  @Qualifier("myServices")
  MyServices myServices;

  @Override
  public void onMessage(final Message message, final byte[] pattern) {
    myServices.call(); 
  }
}

答案 1 :(得分:0)

如果您不想创建独立课程,您也可以这样做:

@Bean
MessageListenerAdapter messageListener(@Qualifier("myServices") MyServices myServices) {
    //use myServices instance somehow
    return new MessageListenerAdapter( new RedisMessageListener() );
}