在 Java 中读取 YAML 文件时堆栈溢出

我正进入(状态


com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造 的实例com.ykb.frd.fraudcore.configuration.DatabaseConfiguration,问题:空


读取 YAML 文件时出现异常。并且应用程序一遍又一遍地尝试,直到由于堆栈溢出异常而崩溃


YAML文件:


db:

  url: blablablaurl

  user: blabla

  password: blabla

爪哇:


@JsonIgnoreProperties(ignoreUnknown = true)

public class DatabaseConfiguration {

    private Database db;

    private static DatabaseConfiguration single_instance = null;


    private DatabaseConfiguration() {

        db = readYml();

    }


    public static DatabaseConfiguration getInstance() {

        if (single_instance == null)

            single_instance = new DatabaseConfiguration();


        return single_instance;

    }


    private final String YML_PATH = //path;


    public Database getDb() {

        return db;

    }


    /**

     * Read from application.yml

     * @return Database object

     */

    private Database readYml(){

        ObjectMapper mapper = new ObjectMapper(new YAMLFactory());

        try {

            return mapper.readValue(new File(YML_PATH), DatabaseConfiguration.class).getDb();

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return null;

    }

}

在readYml()函数内部,无限循环发生在mapper.readValue. 我猜它是关于单例对象的,但我不确定。


调用数据库配置:


private DatabaseConfiguration database = DatabaseConfiguration.getInstance();

谢谢。


心有法竹
浏览 222回答 1
1回答

holdtom

该类不能是单例。Jackson 需要一个公共的默认构造函数。您应该使用不同的类(实际上是 DTO)来反序列化 YAML,然后将该对象传递给您的单身人士。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java