javax 验证 api 不适用于 pojo 验证

javax validation api not working for pojo validation

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

下面是我的示例代码!

POJO Class:

@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

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

验证仅适用于 @ConfigurationProperties 注释 类 与使用 @EnableConfigurationProperties.

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

我觉得可以申请

@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);

    }
}