如何指定嵌套属性的默认值?

编程入门 行业动态 更新时间:2024-10-07 22:29:55
本文介绍了如何指定嵌套属性的默认值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

当我没有为 acme.security.roles 指定值时,以下代码抛出 NPE:

The following code throws NPE when I don't specify value for acme.security.roles:

@ConstructorBinding @ConfigurationProperties("acme") public class AcmeProperties { private final Security security; public AcmeProperties(Security security) { this.security = security; } public Security getSecurity() { return security; } public static class Security { private final List<String> roles; public Security(@DefaultValue("USER") List<String> roles) { this.roles = roles; } public List<String> getRoles() { return roles; } } }

@Configuration(proxyBeanMethods = false) @EnableConfigurationProperties(AcmeProperties.class) public class MyConfiguration { @Bean HttpClientConnectionManager httpClientConnectionManager(AcmeProperties acmeProperties) { Security security = acmeProperties.getSecurity(); security.getRoles(); // throws NPE return new PoolingHttpClientConnectionManager(); } }

使用默认 roles 值使 Spring Boot 实例化 Security 对象的正确方法是什么?我应该以某种方式使用 @DefaultValue 和 SPEL 使其工作吗?

What is the correct way to make spring boot instantiate Security object with default roles value? Should I use @DefaultValue and SPEL somehow to make it work?

推荐答案

试试这个.这应该有效.

Try this. This should work.

@Configuration @ConfigurationProperties(prefix = "acme") public class AcmeProperties { private Security security; public Security getSecurity() { return security; } public void setSecurity(Security security) { this.security = security; } @PostConstruct public void initDefaultValues() { if(security == null) { security = new Security(); } } }

安全类看起来像这样

public class Security { private List<String> roles = Lists.newArrayList("USER"); public List<String> getRoles() { return roles; } public void setRoles(List<String> roles) { this.roles = roles; } }

更多推荐

如何指定嵌套属性的默认值?

本文发布于:2023-10-16 14:01:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1497775.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   默认值   属性

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!