Quarkus的AOP以及参数验证hibernate-validator 发布于 2021-11-19 / 后端 / 没有评论 / 396浏览 一.Aop的话,首先声明一个自定义注解,然后编写切面方法; @Target({ElementType.TYPE, ElementType.METHOD}) @Inherited @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) public @interface Cut { } @Cut @Interceptor public class AopConfig { <span class="hljs-meta">@AroundInvoke</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title function_">cut</span><span class="hljs-params">(InvocationContext context)</span> <span class="hljs-keyword">throws</span> Exception { System.out.println(<span class="hljs-string">"Interceptor"</span>); <span class="hljs-keyword">return</span> context.proceed(); } } 只有环绕切面类型;使用的话将注解放到需要切的类或方法上;二.参数验证:加入依赖: <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-hibernate-validator</artifactId> </dependency> 写入参数校验注解: @NotNull(message = "名称不能为空") private String name; @NotNull(message = "年龄不能为空") private Integer age; @NotNull(message = "生日不能为空") private LocalDateTime birthday; 在控制层使用:(1)使用注解方式: @Path("save") @POST @Cut public Object list(@Valid XUser xUser) { return Arrays.asList(xUser); } } (2)使用注入参数校验器,手动校验: @Inject Validator validator; @Path("save") @POST @Cut public Object list(XUser xUser) { Set<ConstraintViolation<XUser>> validate = validator.validate(xUser); if (!validate.isEmpty()) { for (ConstraintViolation<XUser> userConstraintViolation : validate) { return userConstraintViolation.getMessage(); } } return Arrays.asList(xUser); } 本文由 GY 创作,采用 知识共享署名4.0 国际许可协议进行许可本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名最后编辑时间为: 2021/11/19 15:22