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

解決springboot的aop切面不起作用問題(失效的排查)

 更新時間:2020年04月26日 11:14:43   作者:pu.xiao.zhang  
這篇文章主要介紹了解決springboot的aop切面不起作用問題(失效的排查),具有很好的參考價值,希望對大家有所幫助。 一起跟隨小編過來看看吧

檢查下springboot的啟動類是否開啟掃描

@SpringBootApplication
@ComponentScan(basePackages = {"com.zhangpu.springboot"})

另外springboot默認開啟的EnableAspectJAutoProxy為true

如果不放心可以增加:

@EnableAspectJAutoProxy(proxyTargetClass=true)

第二種可能:

沒有導入 相關的jar

<dependency>
 <groupId>org.aspectj</groupId>
 <artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
 <groupId>org.aspectj</groupId>
 <artifactId>aspectjweaver</artifactId>
</dependency>

補充知識:Springboot aop 實現(xiàn)全局配置事務

1.springboot實現(xiàn)事務只需要 在頭上加上@Transactional注解

@Transactional 默認只捕獲RuntimeException.class

對Exception異常得需要 @Transactional(rollbackFor = {Exception.class}) 捕獲回滾。

2.當項目特別大的時候,對所有的service 都加上事務 ,顯得非常麻煩??梢酝ㄟ^aop 方式實現(xiàn)全局異常。

代碼如下。

這樣就能專注寫業(yè)務邏輯然后注意一下方法名就行了,當然也可以用

source.addTransactionalMethod("*", txAttr_REQUIRED); 匹配所有方法,但是并不是所有的方法都需要事務的。所有推薦匹配方法名的方法

package com.example.demo.aop;

import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.interceptor.DefaultTransactionAttribute;
import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
import org.springframework.transaction.interceptor.TransactionInterceptor;

/**
 * @program: Druid
 * @description:
 * @author: ChenYu
 * @create: 2018-09-20 16:47
 **/
@Aspect
@Configuration
public class TransactionAdviceConfig {

 private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.example.demo.service.*.*(..))";

 @Autowired
 private PlatformTransactionManager transactionManager;

 @Bean
 public TransactionInterceptor txAdvice() {

  DefaultTransactionAttribute txAttr_REQUIRED = new DefaultTransactionAttribute();
  txAttr_REQUIRED.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

  DefaultTransactionAttribute txAttr_REQUIRED_READONLY = new DefaultTransactionAttribute();
  txAttr_REQUIRED_READONLY.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  txAttr_REQUIRED_READONLY.setReadOnly(true);

  NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();

  source.addTransactionalMethod("save*", txAttr_REQUIRED);
  source.addTransactionalMethod("delete*", txAttr_REQUIRED);
  source.addTransactionalMethod("update*", txAttr_REQUIRED);
  source.addTransactionalMethod("exec*", txAttr_REQUIRED);
  source.addTransactionalMethod("set*", txAttr_REQUIRED);
  source.addTransactionalMethod("get*", txAttr_REQUIRED_READONLY);
  source.addTransactionalMethod("query*", txAttr_REQUIRED_READONLY);
  source.addTransactionalMethod("find*", txAttr_REQUIRED_READONLY);
  source.addTransactionalMethod("list*", txAttr_REQUIRED_READONLY);
  source.addTransactionalMethod("count*", txAttr_REQUIRED_READONLY);
  source.addTransactionalMethod("is*", txAttr_REQUIRED_READONLY);

  return new TransactionInterceptor(transactionManager, source);
 }

 @Bean
 public Advisor txAdviceAdvisor() {
  AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
  pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
  return new DefaultPointcutAdvisor(pointcut, txAdvice());
 }

}

以上這篇解決springboot的aop切面不起作用問題(失效的排查)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MyBatis 三表外關聯(lián)查詢的實現(xiàn)(用戶、角色、權限)

    MyBatis 三表外關聯(lián)查詢的實現(xiàn)(用戶、角色、權限)

    這篇文章主要介紹了MyBatis 三表外關聯(lián)查詢的實現(xiàn)(用戶、角色、權限),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • JavaCV實現(xiàn)照片馬賽克效果

    JavaCV實現(xiàn)照片馬賽克效果

    這篇文章主要介紹了如何通過JavaCV實現(xiàn)照片馬賽克效果,文中的示例代碼講解詳細,對我們學習JavaCV有一定的幫助,感興趣的小伙伴可以跟隨小編一起動手試一試
    2022-01-01
  • SpringBoot多環(huán)境日志配置方式

    SpringBoot多環(huán)境日志配置方式

    SpringBoot?默認使用LogBack日志系統(tǒng),默認情況下,SpringBoot項目的日志只會在控制臺輸入,本文給大家介紹SpringBoot多環(huán)境日志配置方式,需要的朋友可以參考下
    2024-08-08
  • Java獲取文件的類型和擴展名的實現(xiàn)方法

    Java獲取文件的類型和擴展名的實現(xiàn)方法

    這篇文章主要介紹了Java獲取文件的類型和擴展名的實現(xiàn)方法的相關資料,需要的朋友可以參考下
    2017-02-02
  • Java如何接收前端easyui?datagrid傳遞的數(shù)組參數(shù)

    Java如何接收前端easyui?datagrid傳遞的數(shù)組參數(shù)

    這篇文章分享一下怎么在easyui的datagrid刷新表格時,在后端java代碼中接收datagrid傳遞的數(shù)組參數(shù),本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-11-11
  • Java中的CyclicBarrier循環(huán)柵欄詳解

    Java中的CyclicBarrier循環(huán)柵欄詳解

    這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來進行線程協(xié)作,等待線程滿足某個計數(shù),構造時設置計數(shù)個數(shù),每個線程執(zhí)行到某個需要“同步”的時刻調用 await()方法進行等待,當?shù)却木€程數(shù)滿足計數(shù)個數(shù)時,繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • log4j日志格式加入自定義字段信息方式

    log4j日志格式加入自定義字段信息方式

    這篇文章主要介紹了log4j日志格式加入自定義字段信息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 使用String轉換到Map結構

    使用String轉換到Map結構

    這篇文章主要介紹了使用String轉換到Map結構,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java增強for循環(huán)的實現(xiàn)方法

    java增強for循環(huán)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava增強for循環(huán)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • JDBC編程實現(xiàn)文件、圖片的存儲方法

    JDBC編程實現(xiàn)文件、圖片的存儲方法

    這篇文章主要介紹了JDBC編程實現(xiàn)文件、圖片的存儲方法,以實例形式分析了Java基于JDBC操作數(shù)據(jù)庫的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論

黎平县| 惠安县| 博湖县| 舟山市| 邛崃市| 庄河市| 文昌市| 贞丰县| 乌兰浩特市| 青川县| 靖宇县| 汶上县| 阿瓦提县| 兴山县| 招远市| 景谷| 玉门市| 宁都县| 即墨市| 会理县| 浦县| 萍乡市| 定南县| 阿荣旗| 浙江省| 柳江县| 吉林市| 遵义市| 新沂市| 古蔺县| 南昌县| 舟曲县| 夏津县| 井陉县| 耒阳市| 林甸县| 宜昌市| 安龙县| 克山县| 吉安市| 柳江县|