利用这些技术..。
在加载log4j2-spring.xml文件之前,我正在尝试加载@Service或@Component (以哪种方式工作),但无法确定如何使事件顺序发生。
我们有一个存储应用程序自定义配置的数据库。我们有一个@Service,它使用JpaRepository、@Entity等访问基于数据库的数据.
我们的一些Log4j2配置依赖于存储在DB配置上的值。因此,我们编写了一个自定义的Log4j2查找插件,它希望使用我们的“自动查询”服务来查询数据库。这允许我们在log4j2 XML文件中放置占位符,如下所示:
<Kafka name="LogToKafka"
topic="${spring:spring.profiles.active}-${ourprefix:${spring:ourapp.kafka.region}}-${ourprefix:${spring:ourapp.server.id}}">在我们的application.properties文件中,我们添加UUID作为属性值,我们的@Service在数据库中使用这些配置查找配置。
spring.application.name=OurApp
ourapp.kafka.region=35a5792d-5218-44cd-87fa-052097c65b92
ourapp.server.id=9f58c5bb-e564-45d9-ae2a-0c1a082a8ac1在我们的数据库中,这些UUID将计算为运行时值(由Log4J2和应用程序中的其他组件使用),如“used”和"dev-server-10“。
问题是当调用Log4j2查找插件的方法时,我们的@Service没有被实例化,所以我们不能以这种方式查询数据库。
是否有办法确保在Log4j2初始化开始之前实例化我们的@服务?
我已经阅读了数十篇关于Spring事件、上下文、侦听器等的文章,但仍然无法找到如何做到这一点的神奇组合。
发布于 2022-07-27 16:33:16
通过代码步进,我发现Log4j2初始化在Spring上下文准备好之前就开始了。所以没有豆子了。听起来,当Spring上下文准备好之后,我需要让它初始化,然后再通过ready编程来初始化它。希望我的luck...that能变得凌乱:-)
https://stackoverflow.com/questions/73054152
复制相似问题