AspectJ开发

 

主流的AOP框架有2个:Spring  AOP、AspectJ。java

Spring AOP使用纯Java实现,不须要专门的编译器和类加载器。框架

AspectJ是基于Java语言的AOP框架,能够单独使用,也能够内嵌到Spring AOP中。单独使用须要专门的编译器、类加载器。函数

 这里介绍如何单独使用AspectJ。测试

 

 

 

下载AspectJ

一、搜素aspectj,找到这个spa

 

 

二、插件

 

 

三、最新稳定的发布版命令行

 

 

四、选择最近的镜像下载3d

至此,获得一个aspectj的jar文件。日志

 

 

 

 

安装AspectJ

一、命令行下执行code

java -jar C:\Users\chy\Downloads\aspectj-1.9.4.jar

 

此句代码是运行这个jar文件,安装AspectJ。若是以前没在Path环境变量中添加jdk\bin的路径,须要先cd到jdk\bin所在目录,jar包的路径要使用本身的。

 

 

二、检查jdk路径是否正确

 

 

三、选择AspectJ的安装路径

 

 

四、目录结构以下

bin下的ajc是AspectJ的编译器(javac是java的编译器)。

 

lib目录以下

 

 

 

IDEA环境配置

一、插件中要安装

第一个是支持单独使用AspectJ,第二个是支持Spring  AOP、在Spring中使用AspectJ。此处安装第一个就ok,但之后会用到第二个,咱们一同安上。其实,实际项目中咱们使用的基本都是第二个。

 

 

二、新建java项目

 

三、将lib下的aspectjrt.jar包添加到项目依赖中。注意这不是从官网下载获得的那个jar包。

 

四、设置aspectj的编译器

 

 

ok,项目环境配好。

 

IDEA内置了ajc编译器,只须要提供lib下的jar包便可,其实咱们能够简单粗暴地解压官网下载的jar,获得lib就能够。固然,这种方式不能获得ajc,就是说不能在命令行下编译aspectj,只能使用IDEA内置的ajc。

安装的这种方式,能够直接在命令行下使用ajc命令编译aspectj项目的java文件,固然也能够在IDEA中使用内置的ajc编译。

 

 

 

 

AspectJ项目示例

一、新建包user,包下新建类User

1 public class User {
2     public void addUser(){
3         System.out.println("正在添加用户");
4         System.out.println("添加用户成功");
5     }
6 }

 

 

 

二、新建包my_aspect,包下新建Aspect:MyAspect

 

 1 public aspect MyAspect {
 2     /*
 3     前加强。execution()的参数是一个函数原型,表示对全部知足这个函数原型的方法都进行加强。
 4     第一个*表示返回值能够是任何类型
 5     后面是函数名,包名.类名.函数名()的形式,第二个*表示能够是user包下的任何类,第三个*表示能够是任何方法
 6     括号里的2个..表示方法的参数表能够是任何数据类型、任何个数
 7     能够不使用通配符,显式指定也行
 8      */
 9     before():execution(* user.*.*(..)){
10         System.out.println("正在检查权限");
11         System.out.println("权限已够");
12     }
13 
14     /*
15     后加强
16     咱们显式指定返回值是void类型,显式指定类、方法,无参数
17      */
18     after():execution(void user.User.addUser()){
19         System.out.println("正在记录日志");
20         System.out.println("已记录日志");
21     }
22 }

 

也可使用其余的通知方法,这些方法名都是预约义的,不能随意修改。

注意自定义的标识符,好比包名、类名不能使用aspectj的关键字,上面红字aspect就是一个aspectj的关键字。

 

 

三、新建包test,包下新建测试类Test

1 public class Test {
2     public static void main(String[] args) {
3         User user=new User();
4         user.addUser();
5     }
6 }

 

 

 

四、运行,控制台输出以下

正在检查权限
权限已够
正在添加用户
添加用户成功
正在记录日志
已记录日志
相关文章
相关标签/搜索