本文介绍SpringBoot中AOP如何使用,包括拦截器和自定义注解。
1. 源码
地址:https://github.com/tyrival/SpringBoot-Dubbo-Sample
2. 拦截器Interceptor
拦截器建立在controller模块中,此处以Token拦截器为例,讲解拦截器的配置方式,在调用接口时,拦截器比后面所说的AOP先发生作用。
2.1 依赖包
拦截器依赖于spring-boot-starter-web,由于项目的根pom.xml已经引入,而controller的pom.xml继承自根pom.xml,所以无需重复引入
1 | <dependency> |
2.2 TokenInterceptor
需要注意的是,此处拦截器所在的包为com.tyrival.controller.interceptor
,而不是com.tyrival.interceptor
,后者在模块启动时会扫描不到。
1 | package com.tyrival.controller.interceptor; |
2.3 配置文件InterceptorConfig
拦截器配置文件所处的包与拦截器相似,必须在controller之下建文件夹,否则也会扫描不到。
1 | package com.tyrival.controller.config; |
3. 自定义注解和AOP
此处所有的注解都建立在controller模块中,与拦截器相同的是,此处的包都需要建立在com.tyrival.controller
之下,否则SpringBoot也会扫描不到。
3.1 依赖包
aop依赖于spring-boot-starter-aop,由于项目的根pom.xml已经引入,而controller的pom.xml继承自根pom.xml,所以无需重复引入
1 | <dependency> |
3.2 日志
3.2.1 Log注解
1 | package com.tyrival.controller.annotation; |
3.2.2 AOP
1 | package com.tyrival.controller.aspect; |
3.3 权限
3.3.1 Permission注解
1 | package com.tyrival.controller.annotation; |
3.3.2 AOP
1 | package com.tyrival.controller.aspect; |
3.4 示例
1 |
|