[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/

 

http://blog.csdn.net/a906998248/article/details/7514969

posted @ 2015-02-02 17:09  snow__wolf  阅读(217)  评论(0)    收藏  举报