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

Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理操作

 更新時(shí)間:2024年06月22日 10:53:07   作者:langzitianya  
這篇文章主要介紹了Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

1.在pom.xml中加入如下依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.在Spring Boot的application啟動(dòng)類上加上

      @EnableAsync(proxyTargetClass = true)
       proxyTargetClass為可選配置相,默認(rèn)為false

3.創(chuàng)建異步執(zhí)行類MyAsyncTask

@Component
public class MyAsyncTask {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @Async
    public void refreshMyDbAsync(String url, String id) {
    	for(int i=0; i < 10; i++){
    	    logger.info("2.In Async Method id:" + id + " count:" + i + " URL:" + url);
    	    try {
		    Thread.sleep(5000);
	    } catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	    }
    	}
    }
}

4.創(chuàng)建Aspect類,定義切入點(diǎn)并在切入點(diǎn)執(zhí)行后調(diào)用異類執(zhí)行類的異步方法

@Aspect
@Component
public class MyAspect {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @Autowired
    private MyAsyncTask myAsyncTask;
    @Pointcut("execution(* com.lantian.controller.Controller1.detail(..)) || "
            + "execution(* com.lantian.controller.Controller1.list(..)) || "
            + "execution(* com.lantian.controller.Controller2.detail(..))")
    public void modifyMethod() {}
    @AfterReturning(returning = "ret", pointcut = "modifyMethod()")
    public void afterModify(Object ret) {
    	//獲取request
    	HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    	String url = request.getRequestURL().toString();
    	String id = request.getParameter("id");
    	logger.info("1.Before Async Method URL:"+url);
    	logger.info(ret+"");
    	myAsyncTask.refreshMyDbAsync(url, id);
    	logger.info("3.After Async Method URL:"+url);
    }
}

5.注意事項(xiàng):

   異步方法不能直接寫在Aspect類里,否則不會(huì)異步執(zhí)行。
      spring對(duì)@Transactional注解時(shí)也有類似問題,spring掃描時(shí)具有@Transactional注解方法的類時(shí),是生成一個(gè)代理類,由代理類去開啟關(guān)閉事務(wù),而在同一個(gè)類中,方法調(diào)用是在類體內(nèi)執(zhí)行的,spring無法截獲這個(gè)方法調(diào)用。

到此這篇關(guān)于Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理的文章就介紹到這了,更多相關(guān)Spring Boot AOP執(zhí)行異步處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis與其使用方法示例詳解

    MyBatis與其使用方法示例詳解

    MyBatis是一個(gè)支持自定義SQL的持久層框架,通過XML文件實(shí)現(xiàn)SQL配置和數(shù)據(jù)映射,簡(jiǎn)化了JDBC代碼的編寫,本文給大家介紹MyBatis與其使用方法講解,感興趣的朋友一起看看吧
    2025-03-03
  • MyBatis基于pagehelper實(shí)現(xiàn)分頁原理及代碼實(shí)例

    MyBatis基于pagehelper實(shí)現(xiàn)分頁原理及代碼實(shí)例

    這篇文章主要介紹了MyBatis基于pagehelper實(shí)現(xiàn)分頁原理及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中異常Exception和捕獲以及自定義異常詳解

    Java中異常Exception和捕獲以及自定義異常詳解

    在工作過程中,我們常常需要在合適的地方拋出合適的異常,除了java自帶的一些異常,我們可以在項(xiàng)目中定制自己的異常,并且全局捕獲它,下面這篇文章主要給大家介紹了關(guān)于Java中異常Exception和捕獲以及自定義異常的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 實(shí)例講解String Date Calendar之間的轉(zhuǎn)換

    實(shí)例講解String Date Calendar之間的轉(zhuǎn)換

    下面小編就為大家?guī)硪黄獙?shí)例講解String Date Calendar之間的轉(zhuǎn)換。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳細(xì)聊聊Spring MVC重定向與轉(zhuǎn)發(fā)

    詳細(xì)聊聊Spring MVC重定向與轉(zhuǎn)發(fā)

    大家應(yīng)該都知道請(qǐng)求重定向和請(qǐng)求轉(zhuǎn)發(fā)都是web開發(fā)中資源跳轉(zhuǎn)的方式,這篇文章主要給大家介紹了關(guān)于Spring MVC重定向與轉(zhuǎn)發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 實(shí)例解析如何正確使用Java數(shù)組

    實(shí)例解析如何正確使用Java數(shù)組

    同一種類型數(shù)據(jù)的集合。其實(shí)數(shù)組就是一個(gè)容器。運(yùn)算的時(shí)候有很多數(shù)據(jù)參與運(yùn)算,那么首先需要做的是什么下面我們就一起來看看。
    2016-07-07
  • Mybatis插件擴(kuò)展及與Spring整合原理分析

    Mybatis插件擴(kuò)展及與Spring整合原理分析

    這篇文章主要介紹了Mybatis插件擴(kuò)展及與Spring整合原理,本文通過實(shí)例文字相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring的同一個(gè)服務(wù)會(huì)加載多次的問題分析及解決方法

    Spring的同一個(gè)服務(wù)會(huì)加載多次的問題分析及解決方法

    這篇文章主要介紹了Spring的同一個(gè)服務(wù)為什么會(huì)加載多次,我們先來梳理一下?Web?容器中如何加載?Bean,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • IntelliJ IDEA快速創(chuàng)建getter和setter方法

    IntelliJ IDEA快速創(chuàng)建getter和setter方法

    這篇文章主要介紹了IntelliJ IDEA快速創(chuàng)建getter和setter方法,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法

    IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法

    這篇文章主要介紹了IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論