spring核心之AOP学习总结二
生活随笔
收集整理的這篇文章主要介紹了
spring核心之AOP学习总结二
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一:springAOP常用的注解
@Aspect:聲明方面組件
@Before:聲明前置通知
@After-returning:聲明后置通知
@After:聲明最終通知
@Around:聲明環(huán)繞通知
@After-throwing:聲明異常通知
?
二:使用SpringAOP的注解對總結一中的案例進行重構
1:注釋掉方面組件的聲明以及將方面組件應用到目標組件的配置
1 <!-- 配置日志組件 2 <bean id="operatorLogger" class="com.hlcui.aspect.OperatorLogger"></bean> 3 4 配置方面組件 5 <aop:config> 6 <aop:aspect ref="operatorLogger"> 7 <aop:before method="logger" pointcut="within(com.hlcui.controller..*)"/> 8 </aop:aspect> 9 10 <aop:aspect ref="operatorLogger"> 11 <aop:around method="logger2" pointcut="within(com.hlcui.controller..*)"/> 12 </aop:aspect> 13 14 <aop:aspect ref="operatorLogger"> 15 <aop:after-throwing method="logger3" throwing="e" pointcut="within(com.hlcui.controller..*)"/> 16 </aop:aspect> 17 </aop:config>--> 18 19 <!-- 開啟SpringAOP的注解掃描 --> 20 <aop:aspectj-autoproxy proxy-target-class="true"/>2:使用@Aspect注解聲明方面組件,并且在方面組件上面聲明前置、后置或者是環(huán)繞通知
1 /** 2 * 3 */ 4 package com.hlcui.aspect; 5 6 import java.text.SimpleDateFormat; 7 import java.util.Date; 8 9 import org.aspectj.lang.ProceedingJoinPoint; 10 import org.aspectj.lang.annotation.AfterThrowing; 11 import org.aspectj.lang.annotation.Around; 12 import org.aspectj.lang.annotation.Aspect; 13 import org.aspectj.lang.annotation.Before; 14 import org.springframework.stereotype.Component; 15 16 17 /** 18 * @author Administrator 19 * 20 */ 21 @Aspect 22 @Component 23 public class OperatorLogger { 24 25 @Before("within(com.hlcui.controller..*)") 26 public void logger(){ 27 System.out.println("-->記錄用戶日志"); 28 } 29 30 @Around("within(com.hlcui.controller..*)") 31 public Object logger2(ProceedingJoinPoint p ) throws Throwable{ 32 String targetName = p.getTarget().getClass().getName(); 33 String methodName = p.getSignature().getName(); 34 String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); 35 String msg = date+"執(zhí)行"+targetName+methodName; 36 System.out.println(msg); 37 Object obj = p.proceed(); 38 System.out.println("調用目標組件業(yè)務方法后"); 39 return obj; 40 } 41 42 @AfterThrowing(pointcut="within(com.hlcui.controller..*)",throwing="e") 43 public void logger3(Exception e){ 44 StackTraceElement[] eles = e.getStackTrace(); 45 System.out.println(eles[0].toString()); 46 } 47 }3:運行測試方法
通過結果可以看出,通過注解聲明方面組件成功切入目標組件。
轉載于:https://www.cnblogs.com/warrior4236/p/6142827.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的spring核心之AOP学习总结二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)树、森林与二叉树的转换
- 下一篇: SpringMVC常用配置-添加静态资源