您现在的位置是:首页 >技术交流 >SpringBoot自定义starter之接口日志输出网站首页技术交流
SpringBoot自定义starter之接口日志输出
简介SpringBoot自定义starter之接口日志输出
前言
本文灵感来源是一道面试题。
要求做一个可以复用的接口日志输出工具,在使用时引入依赖,即可使用。
可能用在多个项目中。
问题处理思路是,自定义一个SpringBoot的Starter,可以加入一些功能配置。核心使用自定义注解、Aspect切面来做。
用切面去切你的自定义注解即可。那么下面内容就做一下具体实现。
自定义starter可以参考文章:https://blog.csdn.net/FBB360JAVA/article/details/128847565
PS:本文使用的环境是 SpringBoot 的 2.7.12版本,Java openjdk11,构建工具使用了 Maven。
文章主体
1 项目全部源码
代码仓库:
https://gitee.com/fengsoshuai/custom-log.git
2 项目结构介绍
上图中的红色框内容,是自定义的starter模块。
包结构中,annotation 是自定义的注解,aop是切面,config是自动配置类,entity是实体类。
3 starter 的使用
在模块 custom-log-starter-test 模块中进行测试使用。
3.1 配置文件 application,yml的内容
org:
feng:
enableCustomLog: true
server:
port: 8080
3.2 启动类
package org.feng;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@EnableAspectJAutoProxy(exposeProxy = true)
@SpringBootApplication
public class CustomLogStarterTestApplication {
public static void main(String[] args) {
SpringApplication.run(CustomLogStarterTestApplication.class, args);
}
}
3.3 控制器类
在接口的方法上,增加注解 CustomLog
。
package org.feng.controller;
import org.feng.customlog.annotation.CustomLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
/**
* 测试控制器
*
* @version v1.0
* @author: fengjinsong
* @date: 2023年06月05日 17时09分
*/
@RestController
public class CustomLogController {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomLogController.class);
@CustomLog
@PostMapping("/hello/{param}")
public String hello(@PathVariable("param") String param) {
LOGGER.info("正在执行接口 CustomLogController#hello({})", param);
String uuid = UUID.randomUUID().toString();
return uuid + param;
}
}
4 测试结果
POST 请求 http://localhost:8080/hello/112233a
输出的日志是:
2023-06-05 17:21:57.381 INFO 16620 --- [nio-8080-exec-1] org.feng.customlog.aop.CustomLogAspect : hello 的请求参数是:[112233a]
2023-06-05 17:21:57.387 INFO 16620 --- [nio-8080-exec-1] org.feng.controller.CustomLogController : 正在执行接口 CustomLogController#hello(112233a)
2023-06-05 17:21:57.388 INFO 16620 --- [nio-8080-exec-1] org.feng.customlog.aop.CustomLogAspect : hello 执行的结果是:7d4b185c-5e5d-4e64-8818-54ef77651561112233a
如果配置进行修改:
org:
feng:
enableCustomLog: false
enableCustomLog 改为false,或直接删除该配置,是不会启动日志输出的。(这里就不贴测试结果了)
结语
全部代码可以在gitte中下载查看。
代码仓库:https://gitee.com/fengsoshuai/custom-log.git
有其他思路的同学也可以在评论区留言讨论,我们共同学习,一起进步吧!
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。