aop术语
AOP的实现其实是利用了动态代理,在不改变原码的情况下对代码进行增强
Joinpoint 连接点:业务层接口的所有方法都是连接点
Pointcut 切入点:被增强的方法
Advice 通知:增强的代码在哪,哪个类就是通知
前置通知:写在被切入点方法前的是前置通知
后置通知:写在被切入点方法后的是后置通知
异常通知:写在catch中的是异常通知
最终通知:写在finally中的是最终通知
环绕通知:整个Object invoke(…,…,…)方法体是环绕通知
Target 目标对象:被代理的对象
Weaving 织入:增强代码已经进入到我们的业务逻辑,它被执行的那个动作叫织入
切面:切入点和通知的结合,就是切入点方法什么时候执行
aop配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 第一步:把通知类交给spring来管理 -->
<bean id="logger" class="com.itheima.utils.Logger"></bean>
<!-- 第二步:导入aop名称空间,并且使用aop:config开始aop配置-->
<aop:config>
<!-- 第三步:使用aop:aspect配置切面,id属性:用于给切面提供一个唯一标识。ref属性:用于应用通知Bean的id-->
<aop:aspect id="logAdvice" ref="logger">
<!-- 第四步:配置通知的类型,指定增强的方法何时执行。mehod属性:用于指定增强的方法名称 pointcut属性:用于指定切入点表达式-->
<!-- 切入点表达式:
关键字:execution(表达式)
表达式写法:访问修饰符 返回值 包名.包名...类名.方法名(参数列表)
-->
<aop:before method="printLog" pointcut="execution(.......自己写)">
</aop:config>
</beans>