aop是面向切面編程的意思,它可以需要先選擇一些切入點(diǎn),然后對(duì)這些切入點(diǎn)進(jìn)行攔截,注入統(tǒng)一的代碼邏輯,這也是解耦的一種方式,也是為了避免重復(fù)的代碼,讓開發(fā)人員把關(guān)注點(diǎn)放在業(yè)務(wù)上。

          引用包
          'org.springframework.boot:spring-boot-starter-aop'
          添加切入點(diǎn)
          /** * 基于com.lind.basic.controller包下的方法進(jìn)行攔截. */ @Aspect @Component public class
          AopPrintConstController { private static final Logger logger =
          LoggerFactory.getLogger(AopPrintConstController.class); /** * 橫切點(diǎn),哪些方法需要被橫切. */
          @Pointcut(value = "execution(public * com.lind.basic.controller..*.*(..))")
          public void cutOffPoint() { } /** * @param joinPoint 具體的方法之前執(zhí)行. */
          @Before("cutOffPoint()") public void doBefore(JoinPoint joinPoint) throws
          Throwable { logger.info("cutOffPoint.before..."); ServletRequestAttributes
          requestAttributes = (ServletRequestAttributes)
          RequestContextHolder.getRequestAttributes(); HttpServletRequest request =
          requestAttributes.getRequest(); String requestURI = request.getRequestURI();
          String remoteAddr = request.getRemoteAddr(); //這個(gè)方法取客戶端ip"不夠好" String
          requestMethod = request.getMethod(); String declaringTypeName =
          joinPoint.getSignature().getDeclaringTypeName(); String methodName =
          joinPoint.getSignature().getName(); Object[] args = joinPoint.getArgs();
          logger.info("請(qǐng)求url=" + requestURI + ",客戶端ip=" + remoteAddr + ",請(qǐng)求方式=" +
          requestMethod + ",請(qǐng)求的類名=" + declaringTypeName + ",方法名=" + methodName + ",入?yún)?" +
          args); } /** * 解用于獲取方法的返回值. * * @param obj 返回值 */ @AfterReturning(returning =
          "obj", pointcut = "cutOffPoint()") public void doBefore(Object obj) throws
          Throwable { logger.info("RESPONSE : " + obj); } }
          測試

          當(dāng)我們訪問controller下的接口下,在控制臺(tái)中將輸出方法執(zhí)行前和執(zhí)行后的結(jié)果
          com.lind.basic.AopPrintConstController :
          請(qǐng)求url=/hello/1,客戶端ip=0:0:0:0:0:0:0:1,請(qǐng)求方式=GET,請(qǐng)求的類名=...
          com.lind.basic.controller.H com.lind.basic.AopPrintConstController : RESPONSE :
          <200 OK,com.lind.basic.entity.Token@249f92d9,{}>
          感想


          事實(shí)上,springboot真的是一個(gè)強(qiáng)大的腳手架,它幫助我們把很多依賴都結(jié)合了,像今天說的aop,事實(shí)上springboot幫我們把以下包都結(jié)合在一起了,讓開發(fā)人員引用時(shí)更方便。

          springboot-aop集成了

          * spring-aop,
          * aspectjrt,
          * spectjweaver

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                调教自虐极限露出小说 | 99精品国产福利在线观看免费 | 色黄视频 | 成人aⅴ天堂 | 堆萌操逼网站 |