国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

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

2024-07-14 08:42:00
字體:
供稿:網(wǎng)友

前言

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)一維護的一種技術(shù)。在Spring Boot中使用AOP也非常簡單,只需要一點簡單的配置即可。

需要使用AOP的類

@RestControllerpublic 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文件。現(xiàn)在我們要統(tǒng)計整個處理過程的耗時,使用AOP來實現(xiàn)。在download上使用了一個@Timer注解,這是一個自定義的普通注解,用來標記這個方法作為一個切點。

Aspect類

@Aspect@Componentpublic 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@EnableAspectJAutoProxypublic class Config {}

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

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

總結(jié)

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


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 民勤县| 永康市| 屯门区| 赤壁市| 蓬溪县| 三都| 吴川市| 赣州市| 浏阳市| 神池县| 孝感市| 陆良县| 缙云县| 崇左市| 凤山市| 沧源| 富川| 营山县| 河南省| 义乌市| 镶黄旗| 台中县| 惠州市| 张家口市| 九龙坡区| 闽清县| 炎陵县| 巴马| 顺平县| 泰宁县| 抚州市| 新沂市| 浦东新区| 大城县| 峡江县| 泰州市| 渭南市| 江阴市| 乾安县| 汝州市| 穆棱市|