第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

spring 基于aop 實(shí)現(xiàn)日志輸出 定義在controller層無效

spring 基于aop 實(shí)現(xiàn)日志輸出 定義在controller層無效

達(dá)令說 2019-02-21 01:07:10
業(yè)務(wù)場(chǎng)景:目前在開發(fā)一個(gè)web后端的程序,提供基于spring mvc的restful的接口給手機(jī)端調(diào)用。由于接口對(duì)性能和效率的要求比較高,為了更好的分析問題,這邊決定輸出日志對(duì)接口調(diào)用情況,以及頻率,做記錄。這邊考慮基于spring的aop來實(shí)現(xiàn)日志切面編程,下面看代碼:切面類 @Aspect public class CxxxAspect { /** * 定義一個(gè)切入點(diǎn) */ @Pointcut("execution(* com..controller.*Controller.*Auth(..))") private void pointCutMethod() { } /** * 聲明前置通知 */ @Before("pointCutMethod()") public void doBefore() { System.out.println("前置通知"); } /** * 聲明后置通知 * @param result */ @AfterReturning(pointcut = "pointCutMethod()", returning = "result") public void doAfterReturning(String result) { System.out.println("后置通知"); System.out.println("---" + result + "---"); } /** * 聲明例外通知 */ @AfterThrowing(pointcut = "pointCutMethod()", throwing = "e") public void doAfterThrowing(Exception e) { System.out.println("例外通知"); System.out.println(e.getMessage()); } /** * 聲明最終通知 */ @After("pointCutMethod()") public void doAfter() { System.out.println("最終通知"); } /** * 聲明環(huán)繞通知 * @param pjp * @return * @throws Throwable */ @Around("pointCutMethod()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { System.out.println("進(jìn)入方法---環(huán)繞通知"); Object o = pjp.proceed(); System.out.println("退出方法---環(huán)繞通知"); return o; } } 目標(biāo)類 @Controller @RequestMapping(value="xxxx") @SuppressWarnings({ "rawtypes", "unchecked" }) public class CXXXController{ @ResponseBody @RequestMapping(value="/xxxx",method=RequestMethod.POST) public void xxxAuth(HttpServletRequest request){ //省略實(shí)際業(yè)務(wù)代碼 return result; } } 配置文件信息(保護(hù)個(gè)人隱私類名全路徑以xxxx代替) <aop:aspectj-autoproxy proxy-target-class="true"/> <bean id="caFaceAuthAspect" class="com.xxxxx.aspect.CxxxAspect"/> 通過main方法測(cè)試代碼: ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml"); context.start(); CAAuthController con=(CXXXController)context.getBean(CXXXController.class); con.xxxAuth(null, null); 日志輸出: 進(jìn)入方法---環(huán)繞通知 前置通知 最終通知 例外通知 null 證明當(dāng)前配置已經(jīng)ok,測(cè)試效果達(dá)到預(yù)期。但是用tomcat啟動(dòng)時(shí),通過http訪問到controll時(shí),并沒有進(jìn)入切面類,更別說通知方法了,請(qǐng)問這是什么情況。我有一個(gè)模糊的假設(shè)就是,我在main方法里面是手動(dòng)實(shí)實(shí)在在的用controll類去調(diào)用了方法,所以觸發(fā)了通知的連接點(diǎn)條件,但是http訪問時(shí),通過spring的mvc分發(fā),反射調(diào)用所以并沒有觸發(fā)連接點(diǎn)的條件。不知道我的假設(shè)是否正確,或者有相關(guān)的大神還請(qǐng)不吝賜教。
查看完整描述

4 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

right 同樣的問題解決了 謝謝。

查看完整回答
反對(duì) 回復(fù) 2019-03-01
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

找了好久答案,原來在這里,贊

查看完整回答
反對(duì) 回復(fù) 2019-03-01
  • 4 回答
  • 0 關(guān)注
  • 456 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)