Spring MQTT服务-未能实例化bean
运行应用程序时,我收到以下错误消息:Spring MQTT服务-未能实例化bean,spring,dependency-injection,mqtt,Spring,Dependency Injection,Mqtt,运行应用程序时,我收到以下错误消息:org.springframework.beans.factory.unsatifiedpendencyException:创建名为“answerController”的bean时出错:通过字段“mqttService”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“mqttService”的bean时出错,该名称在文件[C:\Andreas\Proje
org.springframework.beans.factory.unsatifiedpendencyException:创建名为“answerController”的bean时出错:通过字段“mqttService”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“mqttService”的bean时出错,该名称在文件[C:\Andreas\Projects\LTB\src\backend\target\classes\com\LTB\core\services\mqttService.class]中定义:bean实例化失败;嵌套异常为org.springframework.beans.beanInstationException:未能实例化[com.ltb.core.services.MqttService]:构造函数引发异常;嵌套异常为java.lang.NullPointerException:无法调用“String.length()”,因为“this.input”为null
我已添加此服务来处理MQTT消息传递:
@Service
public class MqttService {
@Value("${mqtt.host}")
private String mqttHost;
String publisherId = UUID.randomUUID().toString();
IMqttClient publisher = new MqttClient(mqttHost, publisherId);
public MqttService() throws MqttException {
mqttConnect();
}
private void mqttConnect() throws MqttException {
MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setConnectionTimeout(10);
publisher.connect(options);
}
public void sendMessage(String msg) throws MqttException {
MqttMessage message = new MqttMessage((msg.getBytes()));
message.setQos(0);
message.setRetained(true);
publisher.publish("answers", message);
}
}
我仅在此控制器中将其用作自动连线依赖项:
@RestController
@RequestMapping(path = "/api/logbook/question")
@CrossOrigin
public class AnswerController {
@Autowired
AnswerRepo answerRepo;
@Autowired
private MqttService mqttService;
@GetMapping(path = "/{QuestionId}/answer")
public List<AnswerDTO> getAnswers(@PathVariable final Long QuestionId, @RequestParam Long user) {
return answerRepo.findByQuestion_IdAndUser_Id(QuestionId, user);
}
@PostMapping(path = "/answer")
public AnswerDTO setAnswer(@RequestBody final AnswerDTO answerDTO) throws MqttException {
this.sendAnswerNotification("TEST");
return answerRepo.save(answerDTO);
}
private void sendAnswerNotification(String msg) throws MqttException {
mqttService.sendMessage(msg);
}
}
@RestController
@请求映射(路径=“/api/logbook/question”)
@交叉起源
公共类应答器控制器{
@自动连线
AnswerRepo AnswerRepo;
@自动连线
专用MqttService MqttService;
@GetMapping(path=“/{QuestionId}/answer”)
公共列表getAnswers(@PathVariable final Long QuestionId,@RequestParam Long user){
返回应答器repo.findByQuestion_-IdAndUser_-Id(QuestionId,用户);
}
@后期映射(路径=“/answer”)
公共应答到setAnswer(@RequestBody final AnswerDTO AnswerDTO)抛出MqttException{
本文件为发送应答通知(“测试”);
返回answerRepo.save(answerDTO);
}
私有void sendAnswerNotification(字符串msg)引发MqttException{
mqttService.sendMessage(msg);
}
}
我如何处理MQTT服务可能引发的构造函数异常?检查
mqttHost
变量,它可能为空