激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 在Spring Boot框架中使用AOP的正確姿勢

在Spring Boot框架中使用AOP的正確姿勢

2021-05-25 12:19餓了么物流技術(shù)團(tuán)隊(duì) Java教程

aop是spring的兩大功能模塊之一,功能非常強(qiáng)大,為解耦提供了非常優(yōu)秀的解決方案。下面這篇文章主要給大家介紹了如何在Spring Boot框架中使用AOP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

spring boot是基于spring的用來開發(fā)web應(yīng)用的框架,功能與spring mvc有點(diǎn)類似,但是spring boot的一大特點(diǎn)就是需要的配置非常少。spring boot推薦convention over configuration,也就是約定大于配置,因此spring boot會(huì)幫你做許多自動(dòng)的配置,并且spring boot使用的是java config,幾乎可以做到零xml文件配置。

假設(shè)現(xiàn)在有這樣一種場景,需要統(tǒng)計(jì)某個(gè)接口的處理耗時(shí),我們可以使用aop來實(shí)現(xiàn),aop為aspect oriented programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。在spring boot中使用aop也非常簡單,只需要一點(diǎn)簡單的配置即可。

需要使用aop的類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@restcontroller
public class downloadcontroller {
 
 @autowired
 private xmldownloadservice downloadservice;
 
 @autowired
 private xmlfileclearservice clearservice;
 
 @requestmapping("/download")
 @timer
 public string download() throws exception {
  downloadservice.download();
  clearservice.compress();
  clearservice.clearall();
  return "ok";
 }
}

這是一個(gè)使用@restcontroller注解的controller類,這個(gè)類會(huì)去下載一些xml文件,然后壓縮,最后刪除下載的xml文件。現(xiàn)在我們要統(tǒng)計(jì)整個(gè)處理過程的耗時(shí),使用aop來實(shí)現(xiàn)。在download上使用了一個(gè)@timer注解,這是一個(gè)自定義的普通注解,用來標(biāo)記這個(gè)方法作為一個(gè)切點(diǎn)。

aspect類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@aspect
@component
public class vipaspect {
 
 private static final logger logger = loggerfactory.getlogger(vipaspect.class);
 
 private long start;
 
 //定義切點(diǎn)
 @pointcut("@annotation(cn.magicwindow.mlink.content.annotation.timer)")
 public void timer(){}
 
 //在方法執(zhí)行前執(zhí)行
 @before("timer()")
 public void before() {
  start = system.currenttimemillis();
 }
 
 //在方法執(zhí)行后執(zhí)行
 @after("timer()")
 public void after() {
  long now = system.currenttimemillis();
  logger.info("job took time {}s in summary", (now - start) / 1000);
 }
}

這里使用了注解來標(biāo)記切點(diǎn),也可以直接按照方法名稱來定義,具體的使用方法可以參考官方文檔。

配置spring boot支持aop

?
1
2
3
4
@configuration
@enableaspectjautoproxy
public class config {
}

只需要使用@enableaspectjautoproxy注解開啟spring boot的aop支持即可。

最后,在調(diào)用download方法之后就會(huì)打印出本次處理的用時(shí)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://juejin.im/post/5b67b8a5f265da0f742f07f1

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费在线观看国产精品 | jizzzzxxxxx| 欧美精品色精品一区二区三区 | 9191久久久久视频 | 青青草好吊色 | 万圣街在线观看免费完整版 | 羞羞视频免费网站男男 | 日韩精品中文字幕一区二区三区 | 国产一区二区高清在线 | 一级毛片在线免费观看 | 色综合久久久久久久久久久 | 毛片在哪看 | 日韩av电影免费看 | 久久久一区二区三区四区 | 国产一区免费 | av免费在线免费观看 | av在线高清观看 | 免费a级黄色毛片 | 久久久婷婷一区二区三区不卡 | 在线亚洲综合 | 久久久成人一区二区免费影院 | 欧美精品一区二区久久 | 悠悠成人资源亚洲一区二区 | 黄色网络免费看 | 二区成人| 日韩黄在线 | 中文字幕专区高清在线观看 | 日韩一级片一区二区三区 | 国产精品a一 | 日本成人高清视频 | 久久精品av | 99亚洲国产精品 | 二区三区在线观看 | 亚洲骚妻 | 国产一级大片在线观看 | 一级电影在线免费观看 | 大学生一级毛片在线视频 | 蜜桃网站在线 | 999久久久免费视频 久久精品国产精品亚洲 | 91真视频 | 女人一级一级毛片 |