第一次写aop的Dome,还有很多不了解,这里项目里有用到,就个人在这里对这个aop和annotation作出一个总结,有不对的地方请指出。望见凉!
首先自定义一个注解:
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CheckBwUserLogin { }
target:声明注解的用的
Retention:注解的生命周期,一般开发都是用RetentionPolicy.RUNTIME
Documented:这个注释是由 javadoc记录的
第二写切面:
@Aspect @Component public class AopCheckBwUser { @Autowired private BwUserService bwUserService; @Autowired private HttpServletRequest request; @Around("@annotation(com.jeesite.modules.bw.annotation.CheckBwUserLogin)") public Object checkAccessRight(ProceedingJoinPoint jp) { XXXXXXX result = jp.proceed(arguments); return Object } }
aspect:声明这个类为一个切面类
component :这个切面交给spring管理
around:增加类型,常用还有before,after
ProceedingJoinPoint:这个参数主要是用来调用目标方法
注意:这里的返回类型必须是目标的返回类型
第三,使用,在目标方法添加该注解。
@CheckBwUserLogin @RequestMapping(value = "/updatePhone")