spring AspectJ 基本使用

来源:互联网 发布:美国eia数据在那里看 编辑:程序博客网 时间:2024/06/09 20:01

spring 实际使用 (这就使用一个例子说明)

测试类以及结果:
package unit;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import bean.HelloService;

public class Main {
    
public static void main(String[] args) {
           ApplicationContext context 
= new ClassPathXmlApplicationContext(      
                   
"beans.xml");    
           HelloService service 
= (HelloService) context.getBean("helloService");    
           service.annotationAop();
           
           System.out.println();
           
           service.xmlAop();
           
    }
}
结果:
 annotationAop//正常方法运行
aop--AspectJ! //
annotation拦截

 xmlAop 
//正常方法运行
 aop--XmlAop! //配置拦截

 

use jar

  • --aspectjrt.jar
  • --aspectjweaver.jar
  • --acglib-nodep-2.1_3.jar
  • --commons-logging.jar
  • --spring.jar
  • --spring-aspects.jar

XML配置
<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"
               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.xsd"
>
        
        
<!-- 测试使用类 分别由 方法 annotationAop/xmlAop -->
        
<bean id="helloService"       
            class
="bean.HelloService"/>    
        
            
        
<!-- annotation aop 拦截 使用@Aspect 
            @Pointcut("execution(* annotationAop(..))")  
            @AfterReturning("mainMethod()")  
        
-->
        
<bean id="xmlAop" 
            class
="aop.AnnotationAspectJ"/>
        
<aop:aspectj-autoproxy/>    
        
        
        
<!-- xml aop  配置文件拦截 -->
        
<bean id="XmlAspectJ"       
            class
="aop.XmlAspectJ"/>
        
<aop:config>     
             
<aop:aspect ref="XmlAspectJ">
                 
<aop:pointcut id="mainMethod" expression="execution(* xmlAop(..))"/>    
                 
<aop:after-returning pointcut-ref="mainMethod" method="goXmlAop"/>     
             
</aop:aspect>   
         
</aop:config>    
            
</beans>

HelloService.java

package bean;

public class HelloService {  
    
public void annotationAop() {    
        System.out.println(
" annotationAop ");
    }
    
    
public void xmlAop(){
        System.out.println(
" xmlAop ");
    }
}

AnnotationAspectJ.java

package aop;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class AnnotationAspectJ {  
    @Pointcut(
"execution(* annotationAop(..))")  
    
public void mainMethod() {}  
    
    @AfterReturning(
"mainMethod()")  
    
public void sayHello() {    
        System.out.println(
"aop--AspectJ!");  
    }
}

 

XmlAspectJ.java

package aop;

public class XmlAspectJ {
    
public void goXmlAop(){
        System.out.println(
" aop--XmlAop! ");
    }
}

原创粉丝点击