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);
}
}
我有一个 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);
}
}