springboot启动项目打印接口列表的实现方法
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"springboot启动项目打印接口列表的实现方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2026年11月04日springboot启动项目打印接口列表的实现方法
本篇内容介绍了"springboot启动项目打印接口列表的实现方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
springboot 启动项目打印接口列表
环境
修改配置文件
Springboot项目添加接口入参统一打印
新建注解,用于实现参数打印功能的增强
自定义序列化规则
写参数打印增强,这里选择环绕增强
springboot 启动项目打印接口列表
环境
springboot 2.3.2.RELEASE
修改配置文件
logging: level: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping: trace
结果:
Springboot项目添加接口入参统一打印
需求:要求接口被调用时要打印被调用方法名,以及入参情况,参数格式化时选择fastjson
注:使用fastjson序列化时脱敏,建议入参统一使用自定义的对象类型作为入参
如果不需要参数脱敏,直接使用增强中相关代码,并去除参数脱敏相关代码即可
新建注解,用于实现参数打印功能的增强
@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ParamInfo { /** * 取消统一打印参数 * 默认为false统一打印 * 如需自定义参数打印 请赋值为true */ boolean unPrint() default false; /** * 需要脱敏的字段,如密码等 */ String[] fields() default {};}自定义序列化规则
/** * 序列化过滤器:值替换 * */public class ReplaceFieldFilter implements ValueFilter { /** * 需要进行替换的属性名和替换值 * key:属性名 * value:替换值 */ private Map fieldMap; public ReplaceFieldFilter() { } public ReplaceFieldFilter(Map fieldMap) { this.fieldMap = fieldMap; } @Override public Object process(Object o, String name, Object value) { if(!CollectionUtils.isEmpty(fieldMap)){ Iterator> iterator = fieldMap.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry next = iterator.next(); if(next.getKey().equalsIgnoreCase(name)){ return next.getValue(); } } } return value; } public Map getFieldMap() { return fieldMap; } public void setFieldMap(Map fieldMap) { this.fieldMap = fieldMap; } /** * 传入需要脱敏的字段名,序列化时格式化为 * 号 */ public ReplaceFieldFilter(String... fields) { String str = "******"; fieldMap = new HashMap<>(4); for (String field : fields) { fieldMap.put(field, str); } }} 写参数打印增强,这里选择环绕增强
@Component@Aspect//表示增强的执行顺序,如果多个增强,数值小的先被执行@Order(0)public class ParamInfoAspect { private static final Logger LOGGER = LoggerFactory.getLogger(ParamInfoAspect.class); @Around("execution(* com.service.impl.*.*(..))") public Object printParam(ProceedingJoinPoint joinPoint) throws Throwable { long startTime = System.currentTimeMillis(); String requestId = RandomStringUtils.randomAlphanumeric(16); Object returnValue = null; try { Object[] args = joinPoint.getArgs(); // 获取方法对象 MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); //通过注解获取脱敏字段,之后初始化fieldMap,完成字段脱敏 ParamInfo annotation = method.getAnnotation(ParamInfo.class); Map fieldMap = new HashMap<>(4); fieldMap.put("password", "******"); if (annotation != null) { //获取需要脱敏的字段名数组 String[] fields = annotation.fields(); for (String field : fields) { fieldMap.put(field, "******"); } } String param; //参数整合,多字段入参整合为对象,单个对象入参格式不变 if (args.length > 1 || (args.length == 1 && args[0].getClass() == String.class)) { Map paramMap = new LinkedHashMap<>(); String[] parameterNames = signature.getParameterNames(); for (int i = 0; i < parameterNames.length; i++) { paramMap.put(parameterNames[i], args[i]); } param = "[" + JSON.toJSONString(paramMap, new ReplaceFieldFilter(fieldMap)) + "]"; } else { param = JSON.toJSONString(args, new ReplaceFieldFilter(fieldMap)); } String methodName = method.getName(); LOGGER.info("method:[{}], parameter:{}, requestId:[{}]", methodName, param, requestId); returnValue = joinPoint.proceed(); return returnValue; } catch (Exception e) { LOGGER.error("system is error:", e); //可在这里定义程序异常时的错误返回值 returnValue = ErrorCode.SYSTEM_ERROR; return returnValue; } finally { LOGGER.info("request cost:{}ms, requestId:[{}]", System.currentTimeMillis() - startTime, requestId); LOGGER.info("returnValue:[{}], requestId:[{}]", returnValue, requestId); } }} "springboot启动项目打印接口列表的实现方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
参数
脱敏
接口
项目
字段
序列
统一
方法
对象
格式
注解
选择
代码
内容
功能
属性
情况
文件
更多
环境
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技
新华互联网科技学校
互联网属科技
金诺互联网科技
互联网金融公司科技
万易互联网科技
科技互联网公司logo
长亮科技互联网金融
科技伦理 互联网公司
海南购全球互联网科技
深圳互联网科技怎么样
江苏南京365互联网科技
南山科技园互联网公司有哪些
互联网为啥属于高科技
移动互联网年度科技创新
高科技互联网发展前景如何
互联网科技圈年度人物
深圳无忧互联网科技
神州科技互联网有限公司
亚光科技低轨卫星互联网
科技互联网企业
中国互联网科技工作委员会毛军
互联网核心科技是什么
互联网科技资迅
未来的互联网科技
互联网科技项目计划书材料类
元气玛特互联网科技公司是外包吗
启辰互联网科技
上海万顺科技互联网有限公司招聘
互联网科技品牌