java - 在我的 Kafka SpringBoot 应用程序的 @PostConstruct 方法中拆分数组时遇到问题

标签 java spring-boot

我正在创建一个 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/

相关文章:

java - JTextField 的 setText(String t) 无法更改文本字段的内容

spring - 如何在我的 Spring Boot 应用程序中暂停 @JmsListener?

java - 如何使用 bean 构造函数从 Spring 中的 YAML 列表创建 bean 列表?

spring - 在 Java 中创建微服务的正确路径是什么? Spring Boot 或 OSGI

hibernate - 如何在 Spring Boot 应用程序中为 ehCache 配置 Dropwizard/CodaHale 指标?

java - JTable,禁用用户列拖动

java - NetBeans 调试器不会在断点处停止

java - 将 jetty 插件替换为 gretty 插件 gradle 时出错

java - 如何使用 Java 数组——从 Ruby 转换为 Java

java - 如何解决Spring boot @EnableAsync和@Async问题?