spring AOP 2.0 实现拦截异常和一些临时功能
??????????本来是测试网上的例子,看着看着,觉得可以修改的简单一点,说干就干。
1,在Eclispe里面建立一个项目,随便,这叫context吧,使用jdk5的环境。
2,在项目里面加入log4j-1.2.8.jar,commons-logging-1.0.4.jar,cglib-nodep-2.1_3.jar,spring.jar(2.5),aspectweaver.jar,aspecjrt.jar。
3,为了能够在系统中使用log4j,在项目目录下加入log4j.properties,内容
?
- package?phoenics.context.test; ??
- ??
- import?org.springframework.context.ApplicationContext; ??
- import?org.springframework.context.support.FileSystemXmlApplicationContext; ??
- import?phoenics.context.code.Logic2; ??
- import?phoenics.context.code.LogicInterface; ??
- /** ?
- ?*?@author?phoenics ?
- ?*?TestAop ?
- ?*/??
- public?class?TestAop?{ ??
- ?public?static?void?main(String[]?args)?throws?InstantiationException,?IllegalAccessException,?ClassNotFoundException?{ ??
- ????????//通过ApplicationContext获取配置文档 ??
- ????????ApplicationContext?actx=new?FileSystemXmlApplicationContext("exception_config.xml"); ??
- ????????LogicInterface?logic1?=?(LogicInterface)actx.getBean("logic1"); ??
- ????????Logic2?logic2?=?(Logic2)actx.getBean("logic2"); ??
- ????????//模拟执行新增、修改、删除方法 ??
- ????????try?{ ??
- ?????????System.out.println("logic1?starting..."); ??
- ????????????logic1.doInsert("张三"); ??
- ????????????logic1.doUpdate("李四"); ??
- ????????????logic1.doDelete("王五"); ??
- ????????}?catch?(Exception?ex)?{} ??
- ????????try?{ ??
- ?????????System.out.println("logic2?starting...");? ??
- ????????????logic2.doInsert("张三"); ??
- ????????????logic2.doUpdate("李四"); ??
- ????????????logic2.doDelete("王五"); ??
- ????????}?catch?(Exception?ex)?{} ??
- ?} ??
- } ??
- ??
10,编写测试类
?11,看到的结果:
logic1 starting...
Logic1...执行具体负责新增的业务逻辑…
Logic1...执行具体负责修改的业务逻辑…
Logic1...执行具体负责删除的业务逻辑…
2007-10-26 20:31:53,390 ERROR (Logger.java:30) - 王五 run doDelete Throw....java.lang.ArithmeticException: / by zero
logic2 starting...
2007-10-26 20:31:53,421? INFO (Logger.java:27) - 张三 run Starting doInsert method
Logic2...执行具体负责新增的业务逻辑…
2007-10-26 20:31:53,625? INFO (Logger.java:27) - 张三 run doInsert method end
2007-10-26 20:31:53,625? INFO (Logger.java:27) - run doInsert and run method in 204ms
2007-10-26 20:31:53,625? INFO (Logger.java:27) - 李四 run Starting doUpdate method
Logic2...执行具体负责修改的业务逻辑…
2007-10-26 20:31:54,078? INFO (Logger.java:27) - 李四 run doUpdate method end
2007-10-26 20:31:54,078? INFO (Logger.java:27) - run doUpdate and run method in 453ms
2007-10-26 20:31:54,093? INFO (Logger.java:27) - 王五 run Starting doDelete method
Logic2...执行具体负责删除的业务逻辑…
2007-10-26 20:31:54,093? INFO (Logger.java:27) - 王五 run doDelete method end
2007-10-26 20:31:54,093? INFO (Logger.java:27) - run doDelete and run method in 0ms
2007-10-26 20:31:54,093 ERROR (Logger.java:30) - 王五 run doDelete Throw....java.lang.ArithmeticException: / by zero