You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从YML文件为Java对象属性设置默认值并保证非空

从YML配置为对象属性设置默认值并保证非空

基于Spring Boot环境的实现方案

以下是三种常见的落地方式,可根据场景选择:


方案一:配置绑定+JSR-380校验(推荐)

让对象成为Spring管理的Bean,自动注入YML配置作为默认值,同时通过注解强制校验非空。

  1. YML配置保持不变:
default:
  title: newBook
  1. 修改对象类:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component // 交由Spring管理实例
@ConfigurationProperties(prefix = "default") // 绑定配置前缀
@Validated // 开启参数校验
public class MyObj { // 规范类名首字母大写

    @NotBlank(message = "图书标题不能为空") // 强制title非空
    private String title; // 自动注入YML中default.title的值作为默认值
}
  1. 引入校验依赖(Maven示例):
    若项目未自带校验包,需添加以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

方案二:@Value直接注入+校验

用@Value注解直接绑定配置值,配合校验注解保证非空:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
@Validated
public class MyObj {

    @NotBlank(message = "图书标题不能为空")
    @Value("${default.title}") // 直接注入YML配置值
    private String title;
}

方案三:手动创建实例时处理(非Spring Bean场景)

如果MyObj不是Spring管理的Bean,可通过Environment获取配置值,手动设置默认值并校验:

// 注入Environment
@Autowired
private Environment env;

// 创建实例并处理默认值与非空校验
MyObj obj = new MyObj();
String defaultTitle = env.getProperty("default.title");
// 若当前title为空,使用YML配置的默认值
obj.setTitle(Optional.ofNullable(obj.getTitle()).orElse(defaultTitle));

// 手动校验非空
if (StringUtils.isBlank(obj.getTitle())) {
    throw new IllegalArgumentException("图书标题不能为空");
}

内容的提问来源于stack exchange,提问作者loid forger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:01:12