1、去官方网站下载aspectj-1.8.0.jar
2、在jar包目录启动cmd,执行java -jar aspectj-1.8.0.jar,Next
3、检查JAVA_HOME路径是否正确,如果不正确,手动选择正确的JAVA_HOME,Next
4、选择安装路径,这个其实解压过程,后续可以将这个安装路径的文件复制到其他地方安装运行,无需通过运行aspectj-1.8.0.jar安装并往注册表中写入信息。Install,安装完毕
5、配置ASPECTJ_HOME环境变量,并添加到Path。将aspectjrt.jar添加进入classpath。环境配置完成,可以使用aspectj了。
6、简单的aspectj框架AOP应用。新建项目aspectjTest
7、编写相关代码Hello.java、World.java、AuthAspect.java、TransAspect.java、TxAspect.java、AfterAspect.java、AspectJTest.java
Hello.java
package com.lfy.bean; public class Hello{ // 定义一个简单方法,模拟应用中的业务逻辑方法 public void foo(){ System.out.println("执行Hello组件的foo()方法"); } //定义一个addUser()方法,模拟应用中添加用户的方法 public void addUser(String name,String pass){ System.out.println("执行Hello组件的addUser添加用户:"+name); }
public int sayHello(){
System.out.println("执行Hello组件的Hello.sysHello()打招呼");
return 20;
} }
World.java
package com.lfy.bean; public class World{ //定义一个简单方法,模拟应用中的业务逻辑方法 public void bar(){ System.out.println("执行World组件的bar()方法"); } }
AuthAspect.java
package com.lfy.aspect; public aspect AuthAspect{ //指定在执行com.lfy.bean包中任意类的任意方法之前执行下面的代码块 //第一个*号表示返回值不限;第二个*号表示类名不限 //第三个*号表示方法名不限;圆括号中..代表任意个数、类型不限的形参 before():execution(* com.lfy.bean.*.*(..)){ System.out.println("模拟进行权限检查..."); } }
TransAspect.java
package com.lfy.aspect; public aspect TransAspect{ void around():execution(void com.lfy.bean.*.*(..)){ System.out.println("模拟事务的开始"); proceed();//回调函数 System.out.println("模拟事务的结束"); } }
TxAspect.java
package com.lfy.aspect; public aspect TxAspect{ //定义Hello.sayHello()方法时执行下面的代码块 Object around():call(int com.lfy.bean.*.*(..)){ System.out.println("TxAspect模拟事务的开始"); Object rvt=proceed();//回调函数 System.out.println("TxAspect模拟事务的结束,目标方法返回值rvt为:"+rvt); return rvt; } }
AfterAspect.java
package com.lfy.aspect; public aspect AfterAspect{
//定义一个切入点,其名为logPointcut,其匹配表达式为execution(* com.lfy.bean.*.*(..))
pointcut logPointcut():execution(* com.lfy.bean.*.*(..));
after():logPointcut(){ System.out.println("方法结束时执行"); } }
AspectJTest.java
package com.lfy.main; import com.lfy.bean.Hello; import com.lfy.bean.World; public class AspectJTest{ public static void main(String[] args){ Hello hello=new Hello();
World world=new World(); hello.foo();
System.out.println(""); hello.addUser("孙悟空","7788");
System.out.println("");
hello.sayHello(); System.out.println(""); world.bar(); } }
8、编译运行,查看结果
进入src目录:执行 ajc -encoding utf-8 -sourceroots com,编译完成,没出现错误,在src目录,执行 java com.lfy.main.AspectJTest 运行主类
9、如果使用ant管理上面的Aspectj项目,需要将安装目录下的aspectjtools.jar添加到系统变量CLASSPATH中,并使用iajc标签进行编译。