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

自定义日志打成jar包引入项目后不生效

背景:写了一个请求响应日志包,打包后在另一个项目使用pom引入后不生效

package com.example.qqllog.aspect;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration
@EnableAspectJAutoProxy
public class RequestLogAutoConfiguration {public RequestLogAutoConfiguration() {}@Bean@ConditionalOnMissingBean({RequestLogAspect.class})public RequestLogAspect requestLogAspect() {return new RequestLogAspect();}
}
package com.example.qqllog.aspect;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SysLog {String value() default "";
}
package com.example.qqllog.aspect;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration
@EnableAspectJAutoProxy
public class RequestLogAutoConfiguration {public RequestLogAutoConfiguration() {}@Bean@ConditionalOnMissingBean({RequestLogAspect.class})public RequestLogAspect requestLogAspect() {return new RequestLogAspect();}
}

在需要输出日志的方法上增加@SysLog注解,发现没有打印日志

原因:

默认情况下,@ComponentScan注解会扫描当前包及其所有子包中的组件。而 @SpringBootApplication 注解包含了@ComponentScan,所以 Spring Boot 框架会自动扫描 Spring Boot启动类当前包及其所有子包中的组件类。而我们的组件在jar包中不在自动扫描范围内,所以无效。

解决:

  • 在资源目录下新建目录 META-INF
  • 在 META-INF 目录下新建文件 spring.factories
  • 在文件中添加下面配置
  • org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.qqllog.aspect.RequestLogAutoConfiguration
    

http://www.lryc.cn/news/474942.html

相关文章:

  • RK3568平台开发系列讲解(中断篇)延迟工作实验
  • RabbitMQ 的集群
  • 整车功能架构 --- 智能座舱
  • java stream流的使用
  • (JVM)带你一起研究JVM的语法糖功能 和 JVM的即时编译器
  • 【Linux】ClickHouse 部署
  • js的小知识
  • 一些swift问题
  • Nginx安装配置详解
  • 汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动
  • 在ubuntu上安装最新版的clang
  • 使用Django REST framework构建RESTful API
  • 「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件
  • Kotlin协程suspend的理解
  • 基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发
  • 51单片机教程(二)- 创建项目
  • Rust 图形界面开发——使用 GTK 创建跨平台 GUI
  • Hellinger Distance(赫林格距离)
  • 【系统架构设计师】七、设计模式
  • 新工具可绕过 Google Chrome 的新 Cookie 加密系统
  • 模型拆解(三):EGNet、FMFINet、MJRBM
  • 齐次线性微分方程的解的性质与结构
  • Python-Celery-基础用法总结-安装-配置-启动
  • vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】
  • 5G学习笔记三之物理层、数据链路层、RRC层协议
  • Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用
  • 超好用的视频剪辑软件分享:10款剪辑软件推荐
  • 5G三大应用场景中的URLLC
  • PyMOL中常用的命令列表
  • 坏块处理 ORA-01578: ORACLE data block corrupted (file # 3, block # 152588)