配置异常通知的步骤
又双叒叕是程序汪2020-12-27 16:30
配置异常通知的步骤
异常-只有当切点报异常才能触发异常通知,否则没效果
在Spring中有AspectJ方式提供了异常通知
什么时候才能触发一下,不是说他怎么都执行,只有当切点抱不是可能就是抱了一茬抱一茬才能触发那其实总体布置我们就已经比较清楚了,想有个通知,我必须得新建一个,是不是得先新建个类?
怎么做?
要么实现ThrowsAdvice
要么定义一个(自定义)方法
在spring配置文件中配置相关的配置属性
配置文件中明确的指出来,当处异常通知的时候,需要执行的异常方法的方法名是什么?
针对于哪个切点
问题来了, Spring框架,如何知道这个方法名呢?
通过Java Bean获取类
配置总览+实现原理
test测试发现异常
demo类Spring未找到(配置文件没有声明)
<bean id="demo" class="com.wq.test.Demo"></bean>
测试结果:
原因切点没报异常,所以没有输出异常通知
那么现在我们要看到异常通知,我们要报异常,比如我们在测试类中,自定义一个算术异常
效果
spring异常通知被执行
如果异常被源程序处理了,Spring能检测到异常吗
结果是不会
如果父类异常抛出
调用的时候处理异常
结果:抛出异常被检测到,执行异常通知。
总结:
Spring AOP都是拦截service实现类的方法,一旦出现异常就让自动回滚,那么我们必须想要让spring知道有异常, Service 中不能try/cath,这就是为什么我们在处理业务逻辑的时候,一般都不能使用try/cath异常处理,这样就不能捕获异常,声明事物不能回滚。
想要在Spring-Aop中AspectJ触发异常通知----
1.新建类在类中选任意名称的方法
2.在spring中配置文件---- <aop:aspect ref="mythrow">ref的属性表示:方法在哪个类。<aop:xxxx/>表示什么通知 <aop:after-throwing method="myexception" pointcut-ref="mypoint"/>method: 当触发这个通知时调用哪个方法?对通知的要求非常低,方法想怎么写就怎么写,对配置文件要求非常严格,按照配置文件格式书写。
3.若要获得异常信息throwing="e":throwing-----异常对象名必须和通知中的方法传入参数, 名相同,