Я искал другие ответы, но, похоже, ни один из них мне не помог, у меня есть приложение с загрузочной пружиной, где я использую mongo и kafka.В основном классе, где мой метод run()
, я могу @Autowired
mongoTemplate, и он работает, но затем в другом классе я сделал то же самое, и я получаю исключение нулевого указателя на mongoTemplate.
Здесьоба класса:
Работает
@SpringBootApplication
public class ProducerConsumerApplication implements CommandLineRunner {
public static Logger logger = LoggerFactory.getLogger(ProducerConsumerApplication.class);
public static void main(String[] args) {
SpringApplication.run(ProducerConsumerApplication.class, args).close();
}
@Autowired
private Sender sender;
@Autowired
MongoTemplate mongoTemplate;
@Override
public void run(String... strings) throws Exception {
Message msg = new Message();
msg.setCurrentNode("my_node");
msg.setStartTime(System.currentTimeMillis());
String json = "{ \"color\" : \"Orange\", \"type\" : \"BMW\" }";
ObjectMapper objectMapper = new ObjectMapper();
msg.setTest(objectMapper.readValue(json, new TypeReference<Map<String,Object>>(){}));
sender.send(msg);
mongoTemplate.createCollection("test123");
mongoTemplate.dropCollection("test123");
}
Не работает
@Component
public class ParentNode extends Node{
@Autowired
public MongoTemplate mongoTemplate;
public void execute(Message message) {
try{
// GET WORKFLOWS COLLECTION
MongoCollection<Document> collection = mongoTemplate.getCollection("workflows");
} catch(Exception e){
e.printStackTrace();
}
}
}
Спасибо за помощь.Это высоко ценится.