本文共 1445 字,大约阅读时间需要 4 分钟。
1.spring cloud项目中 Java Bean Validation 的校验,不需要再声明MethodValidationPostProcessor的@Bean,如下图
@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor();}
2.如果spring cloud的项目中Controller中声明了上述的MethodValidationPostProcessor类,那么程序启动后不再进入自己定义的拦截器。在系统启动时,如果有声明MethodValidationPostProcessor的@Bean,则不会去加载自己定义的拦截器;如果未声明MethodValidationPostProcessor的@Bean,系统会寻找自定义的拦截器。spring是存在很多默认配置,有触发因子去修改配置的。
自定义拦截器
@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface UserLoggedCheck { LoggedCheckMode mode() default LoggedCheckMode.MUST;}
@Aspectpublic class UserLoggedInterceptor implements Ordered { private WebFilter webFilter; private int order; public UserLoggedInterceptor(int order) { super(); this.order = order; } public UserLoggedInterceptor(int order, WebFilter webFilter) { super(); this.order = order; this.webFilter = webFilter; } @Around("@annotation(userLoggedCheck)") public Object pointTransactional(ProceedingJoinPoint point, UserLoggedCheck userLoggedCheck) throws Throwable {
3.spring cloud的Validation 的校验主要存在于Controller层,跟jpa的save层,进行Bean的校验。
4.方法层的校验建议使用com.google.guava包中的Preconditions类
Preconditions.checkNotNull(rebackRequest,"退款信息无效");Preconditions.checkArgument( rebackRequest.getCash().compareTo(BigDecimal.ZERO)>=0, "现金部分的退款额度有误");该类提供了统一的校验方式,同时提供支持汉字提示的提示语
转载地址:http://qeadi.baihongyu.com/