[spring] spring中aop使用
package com.wa.spring.aop; /** * @author Administrator * @Date 2015-02-02 17:06 *定义切点 */ public class Log { //前置通知 public void before(){ System.out.println("开始登陆..."); } //环绕通知 public void login(){ System.out.println("登录中....."); } //后置通知 public void after(){ System.out.println("登陆后...."); } //after-returning 通知 public void success(){ System.out.println("恭喜您,登陆成功..."); } //after-throwing通知 public void error(){ System.out.println("登陆出错了...."); } }
package com.wa.spring.aop; /** * @author Administrator *定义一个切面 */ public class Operate { public void parse(){ String str="3456"; try { int s = Integer.parseInt(str); System.out.println(s); } catch (NumberFormatException e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }
bean.xml的配置:
<?xml version="1.0" encoding="UTF-8"?> <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" xmlns:context="http://www.springframework.org/schema/context" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.2.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <bean id="log" class="com.wa.spring.aop.Log"> </bean> <!-- 在aop:config中配置各种通知 --> <aop:config> <aop:aspect ref="log" > <!-- 声明切入点 --> <aop:pointcut expression="execution(* com.wa.spring.aop.Operate..*(..))" id="operate"/> <!-- 各个通知类型--> <aop:before method="before" pointcut-ref="operate" /> <aop:after method="after" pointcut-ref="operate" /> <!-- 异常通知没有效果哦,不知道什么情况....待解决 --> <aop:after-throwing method="error" pointcut-ref="operate" arg-names="e" throwing="测试异常"/> <aop:after method="login" pointcut-ref="operate"/> <aop:after-returning method="success" pointcut-ref="operate"/> </aop:aspect> </aop:config> <bean id="ope" class="com.wa.spring.aop.Operate"></bean> </beans>
测试:
package com.wa.spring.aop; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class AOPTest { public static void main (String[] args) { ApplicationContext txt = new ClassPathXmlApplicationContext("com/wa/spring/aop/bean.xml"); Operate operate = (Operate) txt.getBean("ope"); operate.parse(); } }
参考资料:
http://pandonix.iteye.com/blog/336873/

浙公网安备 33010602011771号