Spring的AOP的XML方式

AOP特点

可以在不修改源码的情况下对程序进行增强
AOP可以进行权限校验、日志记录、性能监控、事务控制

Spring在底层使用代理机制实现,
JDK的动态代理:针对实现了接口的类
Cglib的动态代理:针对没有实现接口的类产生代理,应用的是底层的字节码增强的技术,生成当前类的子类对象

Spring基于AspectJ开发

AOP的XML方式

  • 引入响应的jar包
    spring 的传统 AOP 的开发的包
    spring-aop-4.2.4.RELEASE.jar
    com.springsource.org.aopalliance-1.0.0.jar
    aspectJ 的开发包:
    com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
    spring-aspects-4.2.4.RELEASE.jar

  • 引入Spring的配置文件
    引入AOP约束

<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">
</beans>

通知类型

前置通知 :在目标方法执行之前执行.
后置通知 :在目标方法执行之后执行
环绕通知 :在目标方法执行前和执行后执行
异常抛出通知:在目标方法执行出现 异常的时候 执行
最终通知 :无论目标方法是否出现异常 最终通知都会 执行

切入点表达式

execution(表达式)
表达式:
[方法访问修饰符] 方法返回值 包名.类名.方法名(方法的参数)
public * cn.itcast.spring.dao..(…)

  • cn.itcast.spring.dao..(…)
  • cn.itcast.spring.dao.UserDao+.*(…)
  • cn.itcast.spring.dao….(…)

XML中的增强配置

<!-- 配置切面类 -->
<bean id="myAspectXml" class="cn.itcast.spring.demo3.MyAspectXml"></bean>
<!-- 进行 aop 的配置 -->
<aop:config>
<!-- 配置切入点表达式:哪些类的哪些方法需要进行增强 -->
<aop:pointcut expression="execution(* 
cn.itcast.spring.demo3.*Dao.save(..))" id="pointcut1"/>
<aop:pointcut expression="execution(* 
cn.itcast.spring.demo3.*Dao.delete(..))" id="pointcut2"/>
<aop:pointcut expression="execution(* 
cn.itcast.spring.demo3.*Dao.update(..))" id="pointcut3"/>
<aop:pointcut expression="execution(* 
cn.itcast.spring.demo3.*Dao.find(..))" id="pointcut4"/>
<!-- 配置切面 -->
<aop:aspect ref="myAspectXml">
	<!--前置通知 -->
	<aop:before method="before" pointcut-ref="pointcut1"/>
	<!-- 后置通知 -->
	<aop:after-returning method="afterReturing"pointcut-ref="pointcut2"/>
	<!-- 配置切面 -->
	<aop:around method="around" pointcut-ref="pointcut3"/>
	<!-- 环绕通知 -->
	<aop:after-throwing method="afterThrowing" pointcut-ref="pointcut4"/>
	<!-- 最终通知 -->
	<aop:after method="after" pointcut-ref="pointcut4"/>
</aop:aspect>
</aop:config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值