0
这里是我的控制器代码以获得豆依赖注入context.getbeans
@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获得消息,但是当我试图在运行时从控制器获取BeanBean时,出现错误
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: {}
谢谢。
我有一个自动装配Autowired服务那里MqttInboundBeans.java,所以如果我是个创设情境戕新的关键词的话,我又怎么去管理注入了UserService – Rawat
AnnotationConfigApplicationContext依赖只会给你MqttInboundBeans定义的豆子。 ApplicationContext将包含项目中定义的所有bean。 – pkoli