spring aop学习记录

本文介绍Spring AOP的基本概念及应用场景,重点讲解了如何利用Spring AOP实现日志记录功能。探讨了切面、通知、切入点等核心概念,并介绍了三种实现方式:基于代理类、基于schema及基于@AspectJ注解。

许多AOP框架,比较常用的是Spring AOP 与AspectJ。这里主要学习的Spring AOP。

 

关于AOP

日志、事务、安全验证这些通用的、散步在系统各处的需要在实现业务逻辑时关注的事情称为“方面”,也可称为 关注点
AOP要做的事,就是从系统中分离出 方面 ,然后集中实现。从而独立地编写业务代码和方面代码,在系统运行时,再将方面“织入”到系统中。
这样好处是:
1、减少方面代码里的错误,处理策略改变时还能做到统一修改;
2、在编写业务逻辑时可以专心于核心业务;
 
AOP重要概念
 
切面:方面(日志、事务)的实现,如日志切面、权限切面等。通常是存放方面实现的普通java类,要被aop容器识别为切面,需要在配置中通过bean来标记指定。
通知:切面的具体实现。以目标方法为参照点。根据位置不同,可分前置、后置、异常、环绕、最终通知5种。切面类中的某个方法具体属于哪类通知,需要在配置中指定。
切入点:用于定义通知应该织入到哪些连接点上。
目标对象:将要织入切面的对象,即被通知的对象。这些对象只包含核心业务逻辑业务代码,所有日志、事务、安全验证等方面的功能等待AOP容器的织入。
代理对象:将通知应用到目标对象之后,被动态创建的对象。功能=目标对象中实现的核心业务逻辑功能+方面(日志、事务、安全验证)代码实现的功能。
织入:将切面应用到目标对象,从而创建一个新的代理对象的过程。
 

 spring aop日志实现有基于代理类、基于schema、基于@AspectJ注解三种方式。其中前两类项目中配置文件比较复杂,注解方式配置比较简洁。

 

参考:Spring AOP 完成日志记录

 

 

 配置文件中关于切入点的一个定义示例:

    <!-- 以AspectJ方式 定义 AOP -->
    <aop:config proxy-target-class="true">
        <aop:advisor pointcut="execution(public * cn.com.bs..*work..*Work*.*(..))" 
            advice-ref="txAdviceWork" />
    </aop:config>

 

 

 看看Spring官方文档的定义(正则匹配原则 如何区分包名、类名、方法名):

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值