无法构造`java.util.LinkedHashMap`的实例(尽管至少存在一个Creator)

时间:2019-07-26 05:30:14

标签: java spring-boot

我正在从json文件加载属性,并在Spring Boot应用程序中创建数据源构建器。但是,当我尝试将值更新为json文件时,出现错误 [无法构造java.util.LinkedHashMap的实例(尽管至少存在一个Creator):没有用于反序列化的String-argument构造函数/工厂方法来自字符串值] 。请找到下面的代码,并在此帮助我。

我已经为类使用“ PropertySource”注释从json加载数据。我正在尝试使用ObjectMapper将这些值更新为json文件。

1。 JsonProperties.class(用于json的类)

@Configuration
@PropertySource(value = "classpath:/config/database_config.json", factory = JsonPropertySourceFactory.class)
@ConfigurationProperties
public class JsonProperties {

    private String ip;
    private String port;

        //getters and setters
}

2。 JsonPropertySourceFactory.class(解析器)

public class JsonPropertySourceFactory implements PropertySourceFactory {

    @SuppressWarnings("unchecked")
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        @SuppressWarnings("rawtypes")
        Map readValue = new ObjectMapper().readValue(resource.getInputStream(), Map.class);
        return new MapPropertySource("json-property", readValue);
    }

}

3。 database_config.json(数据)

{
    "ip": "1.1.1.1",
    "port": "3306",
}

4。尝试动态更新json文件

ObjectMapper mapper = new ObjectMapper();
try {
    mapper.writeValue(new ClassPathResource("configuration/database_config.json").getFile(), dataBaseJsonProperties);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我正在尝试更新json文件中的数据库信息,并通过再次查看json文件来检查数据库来重新启动应用程序。

0 个答案:

没有答案