Spring @AspectJ

Spring @AspectJ

准备工作:需要  spring/lib/asm 下的3个包:asm.jar  asm-commons.jar asm-util.jar
spring/lib/aspectj  下的2个包 aspectjrt.jar  和aspectjweaver.jar
使用@AspectJ的小例子:

public   interface  Company  {
  
public void descript();
  
public void ss();
}

public   class  stockCompany  implements  Company {

    
public void descript() {
        System.out.print(
"This is a stock market");
    }

    
//另外添加一个内嵌descript()的函数 调用后不会拦截里面的descript函数
    public void ss(){
        System.out.println(
"在另外一个函数调用的");
        descript();
    }

}

import  org.aspectj.lang.annotation.Aspect;
import  org.aspectj.lang.annotation.Before;


@Aspect
public   class  PreDescriptAspect  {
@Before(
"execution(* descript(..))")
 
public void beforeDescript(){
     System.out.print(
"Here Is My Company Description!");
 }

}

import  org.springframework.aop.aspectj.annotation.AspectJProxyFactory;

public   class  stockCompanyTest  {
 
public static void main(String[] args){
 Company target
=new stockCompany();
 AspectJProxyFactory factory
=new AspectJProxyFactory();
 factory.setTarget(target);
 factory.addAspect(PreDescriptAspect.
class);
 Company proxy
=factory.getProxy();
 proxy.descript();
 proxy.ss();
 }

}



你可能感兴趣的:(Spring @AspectJ)