我正在创建一个 Kafka Springboot 监听器来跟踪对象的状态。我的卡夫卡部分正在工作,并且能够收听主题。我正在使用树形图将主题的字符串键映射到对象。主题名称实际上包含一些我想用来初始化对象的信息。我的问题是这样的(抱歉,我对 SpringBoot 不是很熟悉)。
在我的 Post Construct 方法中,我有一个名为 locoTopics 的字符串数组。我已经验证字符串正在传入,并且它们的形式为“ignore.ignore.mark.id”。我遇到的问题是,当我尝试在 Post Construct 方法中拆分字符串时,即使字符串确实包含“.”,它似乎也会返回 null。表达。我说它出现了,因为程序看起来向前跳转并跳过了几行代码。准确地说,是在我调试时。它似乎来自“String [] locoArray = locoTopics[i].split("\.");”立即连接到我的对象构造函数并跳过其间的所有步骤。然后它似乎跳进跳出循环。我很困惑这是为什么。这是与正在发生的 SpringBoot 有关的事情还是我在代码中遗漏了一些东西?任何帮助将不胜感激。
public class InitTrackerReceiver {
// instance variables
Map mapr = new TreeMap<String, Locomotive>();
String[] locoTopics;
public List<String> m_failureCodes;
// Moved Functionality to get loco ids into separate class, Locomotive IDs now
// gets locoids
@Autowired
public LocomotiveIDs locomotiveIDs;
//This is where loco objects will be instantiated
@PostConstruct
public void initializeLocomotives() {
// grab loco topic strings and separate into a string array
locoTopics = locomotiveIDs.getLocoString();
// Go through the loco topics from application.properties and create a Loco
// object with that string as identifier
for (int i = 0; i < locoTopics.length; i++) {
String [] locoArray = locoTopics[i].split("\\.");
String markString = locoArray[2];
String scacString = "name";
String idString = locoArray[3];
mapr.put(locoTopics[i], new Locomotive(locoTopics[i], markString, scacString, idString));
}
}
@Value("#{'${failure.init.messagefields}'.split(',')}")
List<String> typesToFail;
最佳答案
我想我应该继续跟进答案。我不知道这是如何发生的,但是调试器中的 Eclipse 代码与正在运行的代码不同。我不知道这是 EGIT 还是 Eclipse 中的错误。当我干净地运行 Maven 时,我的项目将不再启动,这一点变得很明显。每当我尝试调试时,它都会启动并说找不到主类,这是我的 Spring 应用程序启动类。我做了一个 Maven 构建,这似乎让一切都同步了。然后代码开始按预期工作。
关于java - 在我的 Kafka SpringBoot 应用程序的 @PostConstruct 方法中拆分数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58866289/