引言
Spring aop支持@AspectJ注解的方式来配置切面,相比于手动配置xml且手动实现增强、切点的方式要方便很多。一般的配置流程如下:
1.配置xml
在Spring的xml配置文件里引入aop chema:
xmlns:aop="http://www.springframework.org/schema/aop"
<beans>里加上"<aop:aspectj-autoproxy>"
之后Spring容器会自动为那些加了@Aspect注解的component创建代理,织入切面。事实上,Spring内部依旧使用AnnotationAwareAspectJAutoProxyCreator完成了这部分工作,只是隐藏起来了。
如果需要使用CGlib针对类生成代理(jdk原生的代理只支持接口),在上述的配置项中增加属性:
proxy-target-class = true即可。
2.新建相应的切面类
只要加上@Component和@Aspect 注解,Spring容器会自动找到
3.切点逻辑
在方法上加@Pointcut 注解,可识别成切点,访问控制符(private、public protected)相应的表示切点可以被引用到的范围。
@Pointcut注解的value是AspectJ的切点语法,Spring支持大部分AspectJ语法。
4.增强逻辑
比较常用的有:@Before前置增强,@AfterReturning后置增强,@Around环绕增强,@AfterThrowing异常增强,@DeclareParants引介增强,@After final增强。
通过JoinPoint可以获取到连接点的相应信息。
网友评论