如何覆盖类属性中的 application.yml?
Posted
技术标签:
【中文标题】如何覆盖类属性中的 application.yml?【英文标题】:How can I overwrite a application.yml in a class attribute? 【发布时间】:2021-12-30 11:36:25 【问题描述】:我的属性 yml 文件中有这个属性:
jackson:
default-property-inclusion: non_null
serialization:
write-empty-json-arrays: false
serialization-inclusion: NON_EMPTY
它的作用是禁止 JSON 空数组。但是对于类中的特定属性,我希望能够将其返回为空。有没有办法或财产我可以用来做这个? 谢谢!
【问题讨论】:
【参考方案1】:唯一的方法是创建另一个ObjectMapper
,然后使用它来序列化该特定类。
@Configuration
class JacksonConfiguration
@Bean
fun mainObjectMapper() = jacksonObjectMapper().apply
setSerializationInclusion(JsonInclude.Include.NON_NULL)
setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
@Bean
fun otherObjectMapper() = jacksonObjectMapper().apply
setSerializationInclusion(JsonInclude.Include.NON_NULL)
但是,对于这么简单的事情,这似乎有点过头了。
另一个可能最适合您的选项是使用@JsonInclude
注释。您可以按如下方式使用它:
@JsonInclude(JsonInclude.Include.ALWAYS)
List<String> propertyToSerializeEvenIfEmptyOrNull;
【讨论】:
嘿,乔奥!谢谢你的时间!我试过使用@JsonInclude(JsonInclude.Include.ALWAYS),但似乎属性文件会覆盖它。那么,唯一的选择是通过 objectMapper? 那我就答应了。 还有一个问题:我应该如何调用 objectMapper 到类? 这取决于您如何序列化该类的对象。以上是关于如何覆盖类属性中的 application.yml?的主要内容,如果未能解决你的问题,请参考以下文章
在 Autowired 服务类中测试 REST API 时,如何使用测试 application.yml 覆盖主 application.yml?
如何在春季启动测试中覆盖 application-test.yml?
无法从 Java Spring Boot 项目中的 application.yml 文件中读取用户定义类的列表
从位置“类路径资源 [application-dev.yml]”导入的属性“spring.profiles.active”无效