Here是关于方法验证的示例。因此,将检查方法参数设置为非null我必须编写以下代码:
import org.springframework.validation.annotation.Validated
@Validated
public class SomeClass {
public void myMethod(@NotNull Object p1, @Nullable Object p2) {}
}
是否有一种方法可以设置Spring bean验证,以使所有参数默认验证为@NotNull
?例如。当p1
为null
时,以下操作将失败:
import org.springframework.validation.annotation.Validated
@Validated
public class SomeClass {
public void myMethod(Object p1, @Nullable Object p2) {}
}
有什么想法吗?
答案 0 :(得分:0)
您可以选择编写自己的MILLISECOND
注释
@NotNullArgs
和方面:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NotNullArgs {
}
然后您可以像这样使用它:
@Aspect
@Component
public class ArgumentMatcher {
@Around(value = "@annotation(NotNullArgs)")
public Object verifyAuthorities(ProceedingJoinPoint joinPoint) throws Throwable {
final Optional<Object> nullArg = Arrays.stream(joinPoint.getArgs())
.filter(Objects::isNull)
.findFirst();
if (nullArg.isPresent() && joinPoint.getArgs().length > 0) {
throw new IllegalArgumentException(); // or NPE
} else {
return joinPoint.proceed();
}
}
}
这只是草稿,但是您可以使用此代码作为起点
答案 1 :(得分:0)
如果您希望Spring自动验证方法参数,请执行以下操作:
org.hibernate.validator:hibernate-validator
添加到您的依赖项中@javax.validation.constraints.NotNull
标记所需的方法参数然后,当您调用此类方法并且不提供必需的参数时,您将获得javax.validation.ConstraintViolationException
异常。
另一种方法(使用起来更容易)是使用Lombok的方法:只需用@lombok.NonNull
标记方法参数,其余的将由Lombok完成。