首先,到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");
}
}
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);
}
}
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 >
< 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();
}
}
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