YAML在Spring Boot中的数据校验

   2024-09-30 6160
核心提示:在Spring Boot中,我们可以使用Java Bean Validation(JSR 303/JSR 349)来对YAML文件中的数据进行校验。为了实现这个功能,你需

在Spring Boot中,我们可以使用Java Bean Validation(JSR 303/JSR 349)来对YAML文件中的数据进行校验。为了实现这个功能,你需要遵循以下步骤:

添加依赖

在你的pom.xml文件中,添加以下依赖:

   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-validation</artifactId></dependency>
创建一个配置类

创建一个配置类,用于读取YAML文件并将其映射到一个Java对象。例如,假设你有一个名为app-config.yml的YAML文件,内容如下:

app:  name: MyApp  version: 1.0.0

首先,创建一个与YAML文件结构相匹配的Java类:

import javax.validation.constraints.NotBlank;public class AppConfig {    @NotBlank    private String name;    @NotBlank    private String version;    // Getters and setters}

然后,创建一个配置类,用于读取YAML文件并将其映射到AppConfig对象:

import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix = "app")public class AppConfigProperties {    private AppConfig appConfig;    // Getter and setter}
在application.yml中引用YAML文件

在你的application.yml文件中,添加以下内容,以引用app-config.yml文件:

spring:  profiles:    include: app-config
app-config.yml文件中添加校验规则

app-config.yml文件中,添加校验规则。例如,要求nameversion字段不能为空:

app:  name: MyApp  version: 1.0.0_app.name:  javax.validation.constraints.NotBlank.message: Name cannot be blank_app.version:  javax.validation.constraints.NotBlank.message: Version cannot be blank
使用@Validated注解进行校验

在需要进行数据校验的地方,使用@Validated注解。例如,在一个控制器类中:

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder;import org.springframework.web.bind.annotation.RestController;@RestController@Validatedpublic class MyController {    @Autowired    private AppConfigProperties appConfigProperties;    @InitBinder    protected void initBinder(final WebDataBinder binder) {        binder.setValidator(new AppConfigValidator());    }    // Your controller methods}
创建一个自定义校验器

创建一个实现org.springframework.validation.Validator接口的类,用于执行实际的校验操作:

import org.springframework.stereotype.Component;import org.springframework.validation.Errors;import org.springframework.validation.ValidationUtils;import org.springframework.validation.Validator;@Componentpublic class AppConfigValidator implements Validator {    @Override    public boolean supports(Class<?> clazz) {        return AppConfig.class.equals(clazz);    }    @Override    public void validate(Object target, Errors errors) {        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "app.name.notBlank");        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "version", "app.version.notBlank");    }}

现在,当你的应用程序启动时,Spring Boot将自动对app-config.yml文件中的数据进行校验,并在控制器类中使用自定义校验器进行校验。如果数据不符合校验规则,将抛出相应的异常。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号