Spring Cloud Spring Boot mybatis分布式微服务云架构(四十)使用AOP统一处理Web请求日志(1)
2018-03-09 09:51
1321 查看
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
下面主要讲两个内容,一个是如何在Spring Boot中引入Aop功能,二是如何使用Aop做切面去统一处理Web请求的日志。
实现一个简单请求处理:通过传入name参数,返回“hello xxx”的功能。
可以看下面关于AOP的默认配置属性,其中
源码来源
下面主要讲两个内容,一个是如何在Spring Boot中引入Aop功能,二是如何使用Aop做切面去统一处理Web请求的日志。
准备工作
因为需要对web请求做切面来记录日志,所以先引入web模块,并创建一个简单的hello请求的处理。pom.xml中引入web模块
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
实现一个简单请求处理:通过传入name参数,返回“hello xxx”的功能。
@RestController public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET) @ResponseBody public String hello(@RequestParam String name) { return "Hello " + name; } }下面,我们可以对上面的/hello请求,进行切面日志记录。
引入AOP依赖
在Spring Boot中引入AOP就跟引入其他模块一样,非常简单,只需要在pom.xml中加入如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>在完成了引入AOP依赖包后,一般来说并不需要去做其他配置。也许在Spring中使用过注解配置方式的人会问是否需要在程序主类中增加
@EnableAspectJAutoProxy来启用,实际并不需要。
可以看下面关于AOP的默认配置属性,其中
spring.aop.auto属性默认是开启的,也就是说只要引入了AOP依赖后,默认已经增加了
@EnableAspectJAutoProxy。
# AOP spring.aop.auto=true # Add @EnableAspectJAutoProxy. spring.aop.proxy-target-class=false # Whether subclass-based (CGLIB) proxies are to be created (true) as opposed to standard Java interface-based proxies (false).而当我们需要使用CGLIB来实现AOP的时候,需要配置
spring.aop.proxy-target-class=true,不然默认使用的是标准Java的实现。
源码来源
相关文章推荐
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理
- SpringCloud SpringBoot mybatis 分布式微服务(六)Spring Boot中Web应用的统一异常处理
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十八)使用log4j记录日志
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十三)使用log4j实现http请求日志入mongodb(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十一)实现Web层的日志切面
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十二)使用log4j实现http请求日志入mongodb(1)
- 46. Spring Boot中使用AOP统一处理Web请求日志【从零开始学Spring Boot】
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Cloud Spring Boot mybatis分布式微服务云架构(九)使用Swagger2构建强大的RESTful API文档(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十三)使用Spring Security安全控制
- Spring Boot中使用AOP统一处理Web请求日志
- (转)Spring Boot中使用AOP统一处理Web请求日志
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十六)使用JdbcTemplate操作数据库
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十七)使用Spring-data-jpa(1)
- 46. Spring Boot中使用AOP统一处理Web请求日志【从零开始学Spring Boot】