一次 spring aop 集成的踩坑之旅

之前的項(xiàng)目一直使用的是springboot框架,aop 直接引入jar包就能正常使用,免去了繁瑣的配置過程。這次用回springmvc第一次自己動手集成springmvc 的spring-aop 。踩了不少坑 .首先spring-aop 所依賴的三個jar包

```

<dependency>

? ? ? <groupId>org.springframework</groupId>

? ? ? <artifactId>spring-aop</artifactId>

? ? ? <version>${spring-version}</version>

</dependency>

<dependency>

? ? ? <groupId>org.aspectj</groupId>

? ? ? <artifactId>aspectjweaver</artifactId>

? ? ? <version>1.8.9</version>

</dependency>

<dependency>

? ? ? <groupId>org.aspectj</groupId>

? ? ? <artifactId>aspectjrt</artifactId>

? ? ? <version>1.8.9</version>

</dependency>

```

第一次踩坑就出現(xiàn)在 maven 引入jar 包的時候。當(dāng)我寫好pom文件,啟動項(xiàng)目

不出意外 報錯了

```

報錯error at ::0 can't find referenced pointcut

```

翻看資料發(fā)現(xiàn)是 aspectj jar包低版本會造成這種原因,開始我引入的是1.5的版本,但是升到1.8以后還是同樣的問題。

于是查看maven依賴,好吧,這兩個jar包沒有下載成功。于是在maven 鏡像倉庫 下載jar包后,解決問題。

這次順利的啟動,但是進(jìn)行請求調(diào)用的時候,aop 卻并沒有觸發(fā)。

```

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")

? ? public void pointcut(){};

? ? @Around("pointcut()")

? ? public Object interceptor(ProceedingJoinPoint pjp) throws Throwable{

? ? ? ? HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

? ? ? ? String params = getParamValue(request);

? ? ? ? logger.info("====================="+ params);

? ? ? ? Object obj = pjp.proceed();

? ? ? ? logger.info("====================="+ obj);

//? ? ? ? response.setContentType("text/html;charset=UTF-8");

//? ? ? ? response.getOutputStream().write("測試".getBytes());

? ? ? ? return obj;

```

又一次陷入只是盲區(qū)。查看相關(guān)的配置文件。發(fā)現(xiàn)原來aop的配置文件沒有寫對位置,導(dǎo)致aop沒有加載上。

正確的加載位置是在webapp 下的web.xml中的classpath:的位置。

```

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/servlet-*.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

```

于是找到這個配置文件 加入

```

<!-- 支持 @AspectJ 標(biāo)記 -->

<aop:aspectj-autoproxy proxy-target-class="true"/>

```

重啟項(xiàng)目,進(jìn)行訪問,成功進(jìn)入aop 處理邏輯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 我們在前面學(xué)習(xí)了動態(tài)代理機(jī)制,Spring的AOP正是應(yīng)用此機(jī)制實(shí)現(xiàn)的,下面我們來學(xué)習(xí)如何來配置Spring...
    千鋒陳老師閱讀 352評論 1 0
  • 工作到現(xiàn)在快要1年半了,一直沒有時間自己從頭搭建個框架,這個周末實(shí)在是無聊,真的不想打lol了,(黑色玫瑰開黑的喊...
    MacSam閱讀 7,153評論 7 20
  • 今天由于項(xiàng)目需要,簡單的配置了一下ssm框架,maven配置所需包,可直接粘貼復(fù)制 maven依賴 <depend...
    胡GaQue閱讀 805評論 0 4
  • 我好像從一生下來就注定要羨慕別人。 剛剛從媽媽的懷抱里出來沒多久,我就“失去了”媽媽,我的“媽媽”是我的外婆,從那...
    呦呦鹿鳴夜見月閱讀 454評論 0 1
  • 現(xiàn)在像妹子告白的方式各種各樣,什么燭光晚餐、宿舍樓下擺蠟燭、送寵物之類的。 六叔覺得這都不夠新穎,都被大家玩兒爛了...
    顧六叔閱讀 2,544評論 0 0

友情鏈接更多精彩內(nèi)容