在Sping Boot 应用程序中,Spring Boot用于从YAML文件构建Properties对象,如下所示:
YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
yamlFactory.setResources(new DefaultResourceLoader().getResource("application.yml"));
Properties properties = yamlFactory.getObject();
使用Sping Boot 自己的解析器的原因是,它不仅读取符合YAML的设置,还读取点标记的属性,例如:
artist.elvis.name: "Elvis"
artist.elvis.message: "Aloha from Hawaii"
现在已经构建了Properties对象,我想将其Map到如下所示的对象:
@JsonIgnoreProperties(ignoreUnknown = true)
private record Artist(Elvis elvis) {
private record Elvis(String name, String message) { }
}
我的问题是
Jackson怎么能做到这一点呢?或者有没有另一种/更好的解决办法?
非常感谢你的帮助
2条答案
按热度按时间ggazkfy81#
我在Ratpack框架中看到过类似的功能。例如:
实际上,它是使用Jackson的对象Map器完成的,但是在这里发布它的逻辑并不简单。
这里是图书馆:
https://mvnrepository.com/artifact/io.ratpack/ratpack-core/2.0.0-rc-1
xdnvmnnf2#
application.yml
是默认的yml文件,因此不需要自定义配置。Value annotation应该能够读取属性。下一部分我不确定你的要求,但希望这是你正在寻找的。
要绑定到这个对象,“constructor”可能是个不错的选择。
现在将创建的bean自动连接到Artist bean