我有一个POJO类,在这个类中,类的变量被注入了 @Value
注解。我正在尝试使用javax验证api &来验证我的类变量,所以我已经尝试了 @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
即使我提供了一个空白的值,当我试图在控制台中打印这些值时,我没有得到任何异常。
我想 这个 可以应用。
@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);
}
}
验证只适用于 @ConfigurationProperties
注释类与使用 @EnableConfigurationProperties
.
你没有得到任何异常的原因是 @Value
只在属性中寻找属性的存在,并不关心该属性的值是什么,除非你分配了一个错误匹配的数据类型值。