当前需要做一个方法执行情况监控,主要监控方法抛出的异常和执行超时等情况,遇到一个难点就是需要如果使用spring封装的AOP就是我们常见的aspectj注解,因为excution表达式不能满足需求。当时需要对某个包名开头的类,而且可以动态配置是否开启监控和需要排除的包名,经过一番搜索资料很少,最后终于通过spring的aop底层接口可以实现这个功能。
具体实现:
关键接口:AbstractPointcutAdvisor(自定义切面)
这个类有两个方法需要覆盖
1.getPointcut()实现自定义的切点,返回值为boolean
2.getAdvice()拦截实现类 有很多接口BeforeAdvice,AfterAdvice,Interceptor 一般实现这个接口MethodInterceptor