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

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)文章

  • Spring boot自定義http反饋狀態(tài)碼詳解

    Spring boot自定義http反饋狀態(tài)碼詳解

    這篇文章主要給大家介紹了Spring boot自定義http反饋狀態(tài)碼的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離

    RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離

    這篇文章主要介紹了RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離,RocketMQ提高消費(fèi)避免Broker發(fā)生單點(diǎn)故障引起B(yǎng)roker上的消息無法及時(shí)消費(fèi),下文關(guān)于了RocketMQ的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • javaweb實(shí)戰(zhàn)之商城項(xiàng)目開發(fā)(二)

    javaweb實(shí)戰(zhàn)之商城項(xiàng)目開發(fā)(二)

    這篇文章主要針對(duì)javaweb商城項(xiàng)目開發(fā)進(jìn)行實(shí)戰(zhàn)演習(xí),利用mybatis創(chuàng)建DAO層,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入

    Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入

    這篇文章主要介紹了Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Mybatis與Jpa的區(qū)別和性能對(duì)比總結(jié)

    Mybatis與Jpa的區(qū)別和性能對(duì)比總結(jié)

    mybatis和jpa兩個(gè)持久層框架,從底層到用法都不同,但是實(shí)現(xiàn)的功能是一樣的,所以說一直以來頗有爭(zhēng)議,所以下面這篇文章主要給大家介紹了關(guān)于Mybatis與Jpa的區(qū)別和性能對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Spring事務(wù)失效的8大原因詳解

    Spring事務(wù)失效的8大原因詳解

    這篇文章主要介紹了Spring事務(wù)失效的8大原因詳解,這里以 MySQL 為例,其 MyISAM 引擎是不支持事務(wù)操作的,InnoDB 才是支持事務(wù)的引擎,一般要支持事務(wù)都會(huì)使用 InnoDB,需要的朋友可以參考下
    2023-09-09
  • SpringBoot?Web請(qǐng)求響應(yīng)詳細(xì)代碼示例

    SpringBoot?Web請(qǐng)求響應(yīng)詳細(xì)代碼示例

    在Web開發(fā)中請(qǐng)求和響應(yīng)是必不可少的環(huán)節(jié),Spring Boot Web應(yīng)用中請(qǐng)求響應(yīng)的分層解耦是構(gòu)建高效、可維護(hù)系統(tǒng)的關(guān)鍵實(shí)踐,下面這篇文章主要介紹了SpringBoot?Web請(qǐng)求響應(yīng)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • java Long==Long有趣的現(xiàn)象詳解

    java Long==Long有趣的現(xiàn)象詳解

    這篇文章主要給大家介紹了關(guān)于java Long==Long有趣的現(xiàn)象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Java通過JNI調(diào)用C++動(dòng)態(tài)庫的完整流程詳解

    Java通過JNI調(diào)用C++動(dòng)態(tài)庫的完整流程詳解

    JNI(Java Native Interface),是實(shí)現(xiàn)Java/Kotlin與C/C++語言之間交互的橋梁,本文主要為大家介紹了Java通過JNI調(diào)用C++動(dòng)態(tài)庫的完整流程,需要的可以參考下
    2025-04-04
  • Java中的魔法值解決

    Java中的魔法值解決

    這篇文章主要介紹了Java中的魔法值解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論

梓潼县| 文昌市| 乌兰浩特市| 调兵山市| 顺平县| 阳西县| 邵阳市| 郑州市| 镇雄县| 芦溪县| 长阳| 安国市| 双桥区| 永清县| 邵武市| 枣强县| 东丽区| 兰考县| 临沭县| 方城县| 富锦市| 长乐市| 浙江省| 石渠县| 日照市| 临海市| 交口县| 温宿县| 黑龙江省| 东港市| 庆阳市| 无极县| 章丘市| 平定县| 塔河县| 和田市| 进贤县| 浠水县| 茂名市| 青田县| 博客|