AOP-aspectJ實現異常通知
阿新 • • 發佈:2021-02-07
異常通知類
public class MyThrowAdvice {
public void MyThrow(Exception e) {
System.out.println("throw Exception"+e.getMessage());
}
}
Demo類
在Demo1方法中寫了個5/0,讓它報異常
public class Demo {
public void Demo1(){
int i=5/0;
System.out.println("demo1");
}
public void Demo2 (){
System.out.println("demo2");
}
public void Demo3(){
System.out.println("demo3");
}
}
application.xml部分程式碼
- 異常只能用aspectJ方式實現
- 需要在aspect標籤裡邊寫
- 和schema-based一樣,有切點標籤、切點標籤的類、通知標籤、然後ref引入通知標籤的bean
<bean id="mythrow" class="cn.wit.advice.MyThrowAdvice"> </bean>
<aop:config>
<aop:aspect ref="mythrow">
<aop:pointcut expression="execution(* cn.wit.test.Demo.Demo1())" id="mypoint"/>
<aop:after-throwing method="MyThrow" pointcut-ref="mypoint" throwing="e"/>
</aop:aspect>
</aop:config>
<bean id="demo" class="cn.wit.test.Demo"></bean>
測試
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
Demo demo = ac.getBean("demo",Demo.class);
try {
demo.Demo1();
} catch (Exception e) {
}
}
}