Spring和AspectJ集成开发入门实例

首先,到eclipse网站下载符合自己eclipse版本的aspectJ开发插件

安装方法参考http://blog.csdn.net/daryl715/archive/2007/08/20/1751888.aspx

 

首先,要将我们的工程传唤成AspectJ工程,方法是右键单击工程,点击最下面的convert to aspectJ project

MessageWriter.java

这是被通知的对象,我们准备通知foo方法

 

package  ch7.aspectJ;

public   class  MessageWriter  {
   
public void foo(){
       System.out.println(
"write foo");
   }

   
public void bar(){
       System.out.println(
"write bar");
   }

}

 MessageWrapper.java

这是一个aspecjt描述文件,不是java类,随意我们必须用aspecJ Editor打开,方法是,右键选中文件,点打开方式,其中就有aspecJ Editor

 

package  ch7.aspectJ;

public  aspect MessageWrapper  {
     
private String prefix;
     
private String suffix;
     
public void setPrefix(String prefix){
         
this.prefix=prefix;
     }

     
public void setSuffix(String suffix){
         
this.suffix=suffix;
     }

     pointcut doWriting():
         execution(
*
                    ch7.aspectJ.MessageWriter.foo());
  
     before():doWriting()
{
         System.out.println(prefix);
     }

     after():doWriting()
{
         System.out.println(suffix);
     }

     
   
}

内容很简单,不再赘述

 

接下来是配置文件

 

<? xml version="1.0" encoding="UTF-8" ?>
< beans
    
xmlns ="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >


 
< bean  id ="aspect"  class ="ch7.aspectJ.MessageWrapper"  factory-method ="aspectOf" >
   
< property  name ="prefix" >
     
< value > Ha Ha </ value >
   
</ property >
    
< property  name ="suffix" >
     
< value > Hei Hei </ value >
   
</ property >
 
</ bean >
</ beans >

最重要的是配置一个factory-method=aspectOf 因为方面的实例由aspectJ自行管理,我们只能通过这个方法获得该方面的实例

 

 测试代码:

我们直接创建MessageWriter即可,不需要像springAOP那样利用代理实现AOP

package  ch7.aspectJ;

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

public   class  Test  {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        ApplicationContext context
=new ClassPathXmlApplicationContext("ch7/aspectJ/applicationContext.xml");
        
        MessageWriter writer
=new MessageWriter();
        writer.foo();
        writer.bar();
    }


}

 

结果:

Ha Ha
write foo
Hei Hei
write bar

你可能感兴趣的:(Spring和AspectJ集成开发入门实例)