1. 程式人生 > >SSM專案使用AOP建立統一處理請求日誌

SSM專案使用AOP建立統一處理請求日誌

由於專案早已完成,所以很多依賴之前就已經倒入,因此並未新增任何依賴,日誌切面類也和連結中的一致。 只是在xml中新增aop支援時踩了大坑。

按照上一篇文章,將WebLogAspect類、log4j.properties檔案匯入後。按照普通Spring專案的規矩,在xml中進行配置。但是我最開始是在applicationContext.xml 中(也就是Spring容器的配置檔案)新增開啟對@Aspect的支援,切面始終不能生效。

然後經過Google發現,因為我的 Controller 定義在dispatch-servlet.xml中,這樣子導致Controller和我自定義的切面不在同一個context中,從而切面類邏輯不會攔截對應的Controller。 所以需要在dispatch-servlet.xml中新增<aop:aspectj-autoproxy proxy-target-class="true"/> 

然而還未完,由於我的dispatch-servlet.xml中之前沒有aop相關配置,所以在xml頂部的匯入中缺少相關連結。需要新增xmlns:aop="http://www.springframework.org/schema/aop"和在xsi:schemaLocation中新增http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd。 否則請求時會報萬用字元的匹配很全面, 但無法找到元素 'aop:aspectj-autoproxy' 的錯誤。

未處理的問題:在這個專案中,無法通過將log4j.properties中的log4j.appender.DEBUG.File 此處配置修改成 logs/debug.log來避免啟動專案時控制檯出現  log4j:ERROR setFile(null,true) call failed. 報錯:java.io.FileNotFoundException。具體原因未知。。。