利用aop我們可以實現業務代碼與系統級服務例如日志記錄、事務及安全相關業務的解耦,使我們的業務代碼更加干凈整潔。
最近在做數據權限方面的東西,考慮使用切面對用戶訪問進行攔截,進而確認用戶是否對當前數據有訪問權限,而我們的項目是springboot項目,所以花時間研究了下springboot下切面的實現。
1、首先加入相關maven依賴:
Springboot核心注解、
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>
2、編寫控制器
@RestControllerpublic class HelloController {@RequestMapping("/add1") public String addData1(String deviceId) {return "success";}@RequestMapping("/add2") public String addData2(String deviceId) {return "success";}@RequestMapping("/add3") public String addData3(String deviceId) {return "success";}}
spring自定義注解,
3、配置切面
1 2 springboot切面編程,3 4 5 6 7 java自定義注解實現,8 9 10 11 12 ssm框架注解大全,13 14 15 16 17 @SpringBootApplication,18 19 20 21 22 jsonpropertyorder注解,23 |
面向切面編程常用的注解、
怎么通過注解開發一個切面類,
|
這樣下來我們就實現了一個簡單切面,在切面中實現自己的數據安全認證,此處只做一個簡單判斷,測試如下:
4、但是這樣的切面不夠靈活,所以我們添加一個自定義注解
1 2 3 4 5 6 |
|
5、修改切面類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
6、修改控制器,給需要切面的方法上加上注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
?
?
?
|
通過自定義注解,我們可以靈活的添加切面,在需要使用切面的方法上添加注解,測試如下:
實際開發中我們可以將"execution(public * com.example.demo.controller.HelloController.add*(..)) && @annotation(com.example.demo.controller.MyAnnotation)"改為"execution(public * com.example.demo.controller.*.*(..)) && @annotation(com.example.demo.controller.MyAnnotation)",這樣在controller包下,只有我們加上@MyAnnotation注解的方法切面方法才會起作用。
?
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态