javax验证api不能用于pojo验证。

问题描述 投票:0回答:1

我有一个POJO类,在这个类中,类的变量被注入了 @Value 注解。我正在尝试使用javax验证api &amp来验证我的类变量,所以我已经尝试了 @NotNull, @NotEmpty@NotBlank但所有这些似乎都没有验证或抛出任何异常,即使在application.yml文件中出现空白值。有什么办法可以让我在这里使用javax validation api来验证我的POJO吗? PS:我使用lombok来生成我的gettersetter。

下面是我的示例代码

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个回答
1
投票

我想 这个 可以应用。

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

    }
}

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.