Java 参数验证注入(无 REST API 调用)
Java injection on parameter validation (without REST API call)
我有一个 class A
,我想验证“id
”不超过 15 个字符,所以我使用 @Size(min = 1, max = 15, message = "Error")
:
public final class A {
@Size(min = 1, max = 15, message = "Error")
private final String id;
private final String anotherString;
....
}
我正在像下面这样使用 A
,@Valid
:
public final class C {
void methodThatUsesA(@Valid final A a, final B b) {
...
}
}
此外,如果我像下面这样调用 methodThatUsesA
,字符串超过 15 个字符,则不会触发验证,我不知道为什么:
methodThatUsesA(new A("AZERTYUIOPQSDFGDFG", 'a'), new B()){}
接受任何帮助:)
首先,您需要创建并提供一个 MethodValidationPostProcessor
Spring-managed bean,如下所示:
@Configuration
public class MethodValidationConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
然后您需要将 @Validated
添加到您的 class 中,如下所示:
@Validated
public final class A {
@Size(min = 1, max = 15, message = "Error")
private final String id;
private final String anotherString;
....
}
请记住,这仅在 A
和 C
都是 Spring 托管 bean 时才有效。
我有一个 class A
,我想验证“id
”不超过 15 个字符,所以我使用 @Size(min = 1, max = 15, message = "Error")
:
public final class A {
@Size(min = 1, max = 15, message = "Error")
private final String id;
private final String anotherString;
....
}
我正在像下面这样使用 A
,@Valid
:
public final class C {
void methodThatUsesA(@Valid final A a, final B b) {
...
}
}
此外,如果我像下面这样调用 methodThatUsesA
,字符串超过 15 个字符,则不会触发验证,我不知道为什么:
methodThatUsesA(new A("AZERTYUIOPQSDFGDFG", 'a'), new B()){}
接受任何帮助:)
首先,您需要创建并提供一个 MethodValidationPostProcessor
Spring-managed bean,如下所示:
@Configuration
public class MethodValidationConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
然后您需要将 @Validated
添加到您的 class 中,如下所示:
@Validated
public final class A {
@Size(min = 1, max = 15, message = "Error")
private final String id;
private final String anotherString;
....
}
请记住,这仅在 A
和 C
都是 Spring 托管 bean 时才有效。