1、aop中使用@EnableAspectJAutoProxy(proxyTargetClass = false,exposeProxy = true)开启注解。
2、配置方式如下:
3、在解析生成切面的时候,有一步操作是这个:
这里面收集的时候,是只收集了没有@PointCut注解的方法,然后生成表达式
AspectJExpressionPointcut expressionPointcut = getPointcut(
candidateAdviceMethod, aspectInstanceFactory.getAspectMetadata().getAspectClass());
if (expressionPointcut == null) {
return null;
}
。那么问题来了,最终判断一个bean是否需要生成代理对象,是根据有@PointCut
注解的表达式@Pointcut("execution(public * com.xiangxue.jack.service..(..))") 这个中的表达式来判断bean是否需要生成代理对象吧,所以不收集这个,它是怎么实现过滤的呢???