最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

Spring Boot是基于Spring的用來開發(fā)Web應用的框架,功能與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的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(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注解,這是一個自定義的普通注解,用來標記這個方法作為一個切點。

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);
 }
}

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

配置Spring Boot支持AOP

@Configuration
@EnableAspectJAutoProxy
public class Config {
}

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

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

總結(jié)

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

相關(guān)文章

  • java如何連續(xù)執(zhí)行多條cmd命令

    java如何連續(xù)執(zhí)行多條cmd命令

    這篇文章主要介紹了java如何連續(xù)執(zhí)行多條cmd命令的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring之異步任務(wù)@Async解讀

    Spring之異步任務(wù)@Async解讀

    這篇文章主要介紹了Spring之異步任務(wù)@Async,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java依賴包漏洞檢測命令詳解

    Java依賴包漏洞檢測命令詳解

    這篇文章主要介紹了Java依賴包漏洞檢測命令,你可以在修復漏洞后快速進行依賴項的安全檢查,并生成新的報告,而不需要等待 CVE 數(shù)據(jù)庫的下載和更新,這樣可以顯著提高掃描的效率,需要的朋友可以參考下
    2024-11-11
  • 深入淺析Java Object Serialization與 Hadoop 序列化

    深入淺析Java Object Serialization與 Hadoop 序列化

    序列化是指將結(jié)構(gòu)化對象轉(zhuǎn)化為字節(jié)流以便在網(wǎng)絡(luò)上傳輸或者寫到磁盤永久存儲的過程。下面通過本文給大家分享Java Object Serialization與 Hadoop 序列化,需要的朋友可以參考下
    2017-06-06
  • 關(guān)于Java三大特性之多態(tài)的總結(jié)

    關(guān)于Java三大特性之多態(tài)的總結(jié)

    這篇文章主要介紹了關(guān)于Java三大特性之多態(tài)的總結(jié),內(nèi)容詳細,涉及多態(tài)的定義,存在條件,好處,分類及實現(xiàn)方式等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • java?spring?mvc處理器映射器介紹

    java?spring?mvc處理器映射器介紹

    這篇文章主要介紹了java?spring?mvc處理器映射器,文章圍繞equestMapping解析映射介紹展開源碼內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • Java中的SynchronousQueue阻塞隊列及使用場景解析

    Java中的SynchronousQueue阻塞隊列及使用場景解析

    這篇文章主要介紹了Java中的SynchronousQueue阻塞隊列及使用場景解析,SynchronousQueue 是 Java 中的一個特殊的阻塞隊列,它的主要特點是它的容量為0,這意味著 SynchronousQueue不會存儲任何元素,需要的朋友可以參考下
    2023-12-12
  • java結(jié)合prometheus如何實現(xiàn)自定義數(shù)據(jù)監(jiān)控

    java結(jié)合prometheus如何實現(xiàn)自定義數(shù)據(jù)監(jiān)控

    文章介紹了如何配置Prometheus監(jiān)控系統(tǒng),包括配置文件prometheus.yml、被監(jiān)控應用的指標暴露配置以及自定義監(jiān)控指標的實現(xiàn),同時,還詳細說明了監(jiān)控應用如何通過Prometheus API獲取數(shù)據(jù)、處理數(shù)據(jù)并返回結(jié)果
    2024-12-12
  • SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式

    SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式

    這篇文章主要介紹了SpringBoot自定義線程池,執(zhí)行定時任務(wù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 聊聊SpringBoot中組件無法被注入的問題

    聊聊SpringBoot中組件無法被注入的問題

    這篇文章主要介紹了SpringBoot中組件無法被注入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

柳江县| 简阳市| 建阳市| 广水市| 巴马| 工布江达县| 洞口县| 金沙县| 内乡县| 怀化市| 凤凰县| 临沂市| 阜城县| 卓尼县| 雅江县| 丹东市| 武汉市| 九江市| 柏乡县| 驻马店市| 行唐县| 双峰县| 揭西县| 扬州市| 偃师市| 越西县| 赤水市| 从化市| 驻马店市| 乐安县| 高青县| 永定县| 元江| 鹤岗市| 东城区| 巨鹿县| 保德县| 镇雄县| 江西省| 密山市| 榕江县|