当前位置: 首页 > news >正文

cn域名注册网站wordpress会员密码有效期

cn域名注册网站,wordpress会员密码有效期,发帖子有哪些app平台,为什么有的公司做很多个网站认识 Spring AOP 1.什么是 AOP2.AOP 中的概念3.用 AOP 方式管理日志3.1 编写 AOP 日志注解类3.2 编写控制器用于测试 1.什么是 AOP AOP(Aspect Oriented Program,面向切面编程)把业务功能分为核心、非核心两部分。 核心业务功能&#xff1a…

认识 Spring AOP

  • 1.什么是 AOP
  • 2.AOP 中的概念
  • 3.用 AOP 方式管理日志
    • 3.1 编写 AOP 日志注解类
    • 3.2 编写控制器用于测试

1.什么是 AOP

AOP(Aspect Oriented Program面向切面编程)把业务功能分为核心、非核心两部分。

  • 核心业务功能:用户登录、增加数据、删除数据。
  • 非核心业务功能:性能统计、日志、事务管理。

在 Spring 的面向切面编程(AOP)思想里,非核心业务功能 被定义为 切面。核心业务功能和切面功能先被分别进行独立开发,然后把切面功能和核心业务功能 编织 在一起,这就是 AOP。
在这里插入图片描述
由此可见,AOP 将业务无关,却为业务模块所共同调用的逻辑封装起来,以便减少系统的重复代码,降低模块间的耦合度,利于未来的拓展和维护。这正是 AOP 的目的,它是 Spring 最为重要的功能之一,被广泛使用。

2.AOP 中的概念

  • 切入点pointcut):在哪些类、哪些方法上切入。
  • 通知advice):在方法前、方法后、方法前后做什么。
  • 切面aspect):切面 = 切入点 + 通知。即在什么时机、什么地方、做什么。
  • 织入weaving):把切面加入对象,并创建出代理对象的过程。
  • 环绕通知:AOP 中最强大、灵活的通知,它集成了前置和后置通知,保留了连接点原有的方法。

3.用 AOP 方式管理日志

下面通过实例演示如何用 AOP 方式管理日志。

3.1 编写 AOP 日志注解类

package com.example.demo.aop;import org.apache.commons.lang3.builder.ToStringBuilder;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;/*** Description:  使之成为切面类*/
@Aspect
/*** Description: 把切面类加入到IOC容器中*/
@Component
public class AopLog {private Logger logger = LoggerFactory.getLogger(this.getClass());//线程局部的变量,解决多线程中相同变量的访问冲突问题。ThreadLocal<Long> startTime = new ThreadLocal<>();//定义切点@Pointcut("execution(public * com.example..*.*(..))")public void aopWebLog() {}@Before("aopWebLog()")public void doBefore(JoinPoint joinPoint) throws Throwable {startTime.set(System.currentTimeMillis());// 接收到请求,记录请求内容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 记录下请求内容logger.info("URL : " + request.getRequestURL().toString());logger.info("HTTP方法 : " + request.getMethod());logger.info("IP地址 : " + request.getRemoteAddr());logger.info("类的方法 : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());//logger.info("参数 : " + Arrays.toString(joinPoint.getArgs()));logger.info("参数 : " + request.getQueryString());}@AfterReturning(pointcut = "aopWebLog()",returning = "retObject")public void doAfterReturning(Object retObject) throws Throwable {// 处理完请求,返回内容logger.info("应答值 : " + retObject);logger.info("费时: " + (System.currentTimeMillis() - startTime.get()));}//抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。@AfterThrowing(pointcut = "aopWebLog()", throwing = "ex")public void addAfterThrowingLogger(JoinPoint joinPoint, Exception ex) {logger.error("执行 " + " 异常", ex);}}
  • @Before:在切入点开始处切入内容。
  • @After:在切入点结尾处切入内容。
  • @AfterReturning:在切入点 return 内容之后切入内容(可以用来对处理返回值做一些加工处理)。
  • @Around:在切入点前后切入内容,并自己控制何时执行切入点自身的内容。
  • @AfterThrowing:用来处理当切入内容部分抛出异常之后的处理逻辑。
  • @Aspect:标记为切面类。
  • @Component:把切面类加入到 IOC 容器中,让 Spring 进行管理。

3.2 编写控制器用于测试

下面的控制器构造了一个普通的 Rest 风格的页面。

package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class AopLogController {@GetMapping("/aoptest")public String aVoid(){return "hello aop test";}
}

启动项目,访问 http://localhost:8080/aoptest

在这里插入图片描述
在控制台会输出如下信息。

在这里插入图片描述

http://www.yayakq.cn/news/763572/

相关文章:

  • 企业网站的建设电话咨询京东网站建设现状
  • 开发网站合同外贸网站用wordpress
  • ui设计师证书优化防控措施
  • 腾讯云快速建站全国旅游卡app
  • 霍林郭勒市建设局网站网站建设销售ppt模板
  • 网站 建设文档网站文件命名
  • 常德建设网站淘宝指数转换工具
  • 宁波网站开发定制营销型网站建设的目标是
  • 莆田企业制作网站网站服务器和网站备案
  • 医疗器械类网站icp备案前置审批外贸网站定制制作公司
  • 屏蔽 wordpress 插件下载做seo是什么意思
  • 免费追剧网站十大永久免费的软件下载
  • 内网建设网站徐州网站建设方案咨询
  • 营销型网站建设排名事业单位网站建设
  • 做公司网站一般多少钱南京网站制作搭建
  • 网站建设与实现的要求与务网页制作中的常见问题
  • 国外哪些网站做产品推广比较好建筑网建筑规范
  • 郑州作网站在货源网站自己拿样 加盟 做代理 哪个比较好?
  • 项目管理6个核心内容保定网站seo服务
  • 泉州企业网站制作哪家好怎么制作网站上传视频
  • 怎么查看网站有没有做301哈尔滨企业网站模板建站
  • 为什么国外网站有时打不开wordpress邮件发送失败
  • 网站建设教程免费cms与wordpress
  • 做芯片哪个网站推广找个网站怎么那么难
  • c语言开发网站后端大望路网站建设
  • 福州建网站公司论坛seo设置
  • 郑州餐饮网站建设哪家好网站建设的步骤教学
  • 最新网站推广防录屏网站怎么做
  • 网站布局fVs做的网站调试时如何适应网页
  • 网站业务费如何做记账凭证一学一做看视频网站