【问题标题】:javax validation api not working for pojo validationjavax验证api不适用于pojo验证
【发布时间】:2020-05-29 17:18:57
【问题描述】:

我有一个 POJO 类,其中的类变量被 @Value 注释注入。我正在尝试使用 javax 验证 api 验证我的类变量,所以我尝试了 @NotNull@NotEmpty@NotBlank,但即使是空白/空值,它们似乎都没有验证或抛出任何类型的异常值存在于 application.yml 文件中。关于如何使用 javax 验证 api 验证我的 POJO 的任何想法? PS:我正在使用 lombok 来生成我的 getter/setter。

下面是我的示例代码!

POJO 类:

@Component
@Getter
@Setter
public class Credentials {

    @NotBlank
    @Value("${app.username}")
    private String user_name;

    @NotBlank
    @Value("${app.password}")
    private String password;

}

下面是application.yml文件:

app:
    username: '#{null}'
    password: passWord

即使我提供了一个空白值,当我尝试在控制台中打印这些值时也不会出现任何异常。

【问题讨论】:

    标签: spring spring-boot lombok spring-annotations


    【解决方案1】:

    我觉得this可以申请。

    @Data
    @RequiredArgsConstructor
    public class Credentials {
    
        private final String user_name;
    
        private final String password;
    
    }
    

     

    @Configuration
    @Validated
    public class CredentialsConfiguration {
    
        @Bean
        public Credentials credentials(
            @NotBlank @Value("${app.username}") final String user_name,
            @NotBlank @Value("${app.password}") final String password) {
    
            return new Credentials(user_name, password);
    
        }
    }
    

    【讨论】:

      【解决方案2】:

      验证仅适用于 @ConfigurationProperties 带注释的类并结合使用 @EnableConfigurationProperties

      你没有得到任何异常的原因是@Value 只在属性中寻找属性的存在,它不关心该属性的值是什么,除非你分配了一个不匹配的数据类型价值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-02
        • 2011-05-17
        • 1970-01-01
        • 2020-07-30
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 2011-01-16
        相关资源
        最近更新 更多