xml版本aop4种前置-通知

AOP面向切面编程(实现不修改原有java代码前提下,就实现额外(增强)功能)
处理各层公共功能:日志管理,事务管理,权限管理


若目标对象实现了若干接口,使用jdk代理
若目标对象没有实现任何接口,使用cglib代理


  • aop 配置
  • aop 切面:控制哪一层,ref由那个事务管理器处理
  • aop 切入点:控制那个包,那个类,那些方法,那些返回值
  • 如果包里面写…表示当前包和子包
  • 通知包含:前置begin,后置commint,最终close,异常rollback
  • 如果四种通知需要一起使用,try catch finally,那必须使用环绕通知 around
<!-- 真实主题角色 -->
	<bean id="userService" class="cn.itsource.spring.day2.i_aop_xml.UserServiceImpl" />

	<!-- 事务管理器 -->
	<bean id="txManager" class="cn.itsource.spring.day2.i_aop_xml.TxManager" />

	<!-- aop配置 -->
	<aop:config>
		<!-- aop切面 :控制那一层,ref由那个事务管理器处理 -->
		<aop:aspect ref="txManager">
			<!-- aop切入点:控制那个包,那个类,哪些方法,哪些返回值 -->
			<!-- expression表达式="execution执行(*返回值 包.类.方法(形参)) -->
			<!-- 如果在包里面写..表示当前包和子包,*通配符,形参..所有形式的参数 -->
			<aop:pointcut
				expression="execution(* cn.itsource.spring.day2.i_aop_xml.I*Service.*(..))"
				id="pointcutId" />
			<!-- 前置增强/通知 -->
			<!-- <aop:before method="begin" pointcut-ref="pointcutId" /> -->
			<!-- 后置增强/通知 -->
			<!-- <aop:after method="commit" pointcut-ref="pointcutId" /> -->
			<!-- 最终增强/通知 -->
			<!-- <aop:after-returning method="close" pointcut-ref="pointcutId" /> -->
			<!-- 异常增强/通知 -->
			<!-- public void rollback(Exception e) throwing="必须和方法里面形参的名称一致" -->
			<!-- <aop:after-throwing method="rollback" throwing="e" -->
			<!-- pointcut-ref="pointcutId" /> -->

			<!-- 如果上面4种增强,需要一起使用try,catch,finally,那就必须使用环绕增强/通知 -->
			<aop:around method="around" pointcut-ref="pointcutId" />

		</aop:aspect>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值