【发布时间】:2017-03-04 07:28:57
【问题描述】:
这是我获取 bean 的控制器代码
@RequestMapping("/suscribetest")
@ResponseBody
public String subscribeTest(){
try{
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MqttInboundBeans.class);
MqttPahoMessageDrivenChannelAdapter messageChannel = context.getBean("inbound",MqttPahoMessageDrivenChannelAdapter.class);
messageChannel.addTopic("test", 2);
}catch(Exception ex){
System.out.println("err "+ex.getLocalizedMessage());
}
return "";
}
下面是我的 bean 类
@Configuration
public class MqttInboundBeans {
@Autowired
private UserService service;
@Bean
public MessageChannel mqttInputChannel() {
return new DirectChannel();
}
@Bean
public MessageProducer inbound() {
MqttPahoMessageDrivenChannelAdapter adapter =
new MqttPahoMessageDrivenChannelAdapter("tcp://localhost:1883", "testClient",
"DATA/#", "LD/#");
adapter.setCompletionTimeout(0);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(2);
adapter.setOutputChannel(mqttInputChannel());
return adapter;
}
@Bean
@ServiceActivator(inputChannel = "mqttInputChannel")
public MessageHandler handler() {
return new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println(message.getHeaders()+" "+message.getPayload());
}
};
}
}
当我尝试运行应用程序时,它工作正常,我可以从 messageHandler 获取消息,但是当我尝试在运行时从控制器 getBean 时出现错误
Error creating bean with name 'mqttInboundBeans': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.ehydromet.service.UserService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
谢谢。
【问题讨论】:
标签: spring dependency-injection javabeans