欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年08月10日 11:35:20   作者:餓了么物流技術(shù)團(tuán)隊  
aop是spring的兩大功能模塊之一,功能非常強(qiáng)大,為解耦提供了非常優(yōu)秀的解決方案。下面這篇文章主要給大家介紹了如何在Spring Boot框架中使用AOP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

Spring Boot是基于Spring的用來開發(fā)Web應(yīng)用的框架,功能與Spring MVC有點類似,但是Spring Boot的一大特點就是需要的配置非常少。Spring Boot推薦convention over configuration,也就是約定大于配置,因此Spring Boot會幫你做許多自動的配置,并且Spring Boot使用的是Java Config,幾乎可以做到零XML文件配置。

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

需要使用AOP的類

@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";
 }
}

這是一個使用@RestController注解的Controller類,這個類會去下載一些XML文件,然后壓縮,最后刪除下載的XML文件?,F(xiàn)在我們要統(tǒng)計整個處理過程的耗時,使用AOP來實現(xiàn)。在download上使用了一個@Timer注解,這是一個自定義的普通注解,用來標(biāo)記這個方法作為一個切點。

Aspect類

@Aspect
@Component
public class VipAspect {

 private static final Logger logger = LoggerFactory.getLogger(VipAspect.class);

 private long start;

 //定義切點
 @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)記切點,也可以直接按照方法名稱來定義,具體的使用方法可以參考官方文檔。

配置Spring Boot支持AOP

@Configuration
@EnableAspectJAutoProxy
public class Config {
}

只需要使用@EnableAspectJAutoProxy注解開啟Spring Boot的AOP支持即可。

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

總結(jié)

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

相關(guān)文章

  • java遞歸讀取目錄下所有文件的方法

    java遞歸讀取目錄下所有文件的方法

    這篇文章主要為大家詳細(xì)介紹了java遞歸讀取目錄下所有文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java解釋器的運行過程介紹

    Java解釋器的運行過程介紹

    今天小編就為大家分享一篇關(guān)于Java解釋器的運行過程介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • java實現(xiàn)小貓釣魚游戲

    java實現(xiàn)小貓釣魚游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)小貓釣魚游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • java @Value(

    java @Value(

    這篇文章主要介紹了java @Value("${}")獲取不到配置文件中值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java8的Lambda遍歷兩個List匹配數(shù)據(jù)方式

    Java8的Lambda遍歷兩個List匹配數(shù)據(jù)方式

    這篇文章主要介紹了Java8的Lambda遍歷兩個List匹配數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MybatisPlus搭建項目環(huán)境及分頁插件

    MybatisPlus搭建項目環(huán)境及分頁插件

    Mybatis-Plus(簡稱MP)是一個Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MybatisPlus搭建項目環(huán)境及分頁插件的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較

    Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較

    這篇文章主要介紹了Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 詳解java集成支付寶支付接口(JSP+支付寶20160912)

    詳解java集成支付寶支付接口(JSP+支付寶20160912)

    本篇文章主要介紹了java集成支付寶支付接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java局部內(nèi)部類和匿名內(nèi)部類定義與用法實例分析

    Java局部內(nèi)部類和匿名內(nèi)部類定義與用法實例分析

    這篇文章主要介紹了Java局部內(nèi)部類和匿名內(nèi)部類,結(jié)合實例形式分析了java局部內(nèi)部類和匿名內(nèi)部類相關(guān)定義、原理與用法,需要的朋友可以參考下
    2019-08-08
  • 10個Java文件操作必備技巧分享

    10個Java文件操作必備技巧分享

    在我們?nèi)粘5拈_發(fā)中,文件操作是一個非常重要的主題。文件讀寫、文件復(fù)制、任意位置讀寫、緩存等技巧都是我們必須要掌握的。本文為大家整理了10個實用的文件操作技巧,希望對大家有所幫助
    2023-04-04

最新評論