Java Spring-扩展StartupInfoLogger

Java Spring-扩展StartupInfoLogger,java,spring,spring-mvc,logging,Java,Spring,Spring Mvc,Logging,是否可以扩展Spring BootStartupInfoLogger,以便在启动时打印更多信息 我的目标是记录一些与应用程序相关的信息,但使用 @PostConstruct public void contextInitialized() { logger.info("My information"); } 这些信息是在各种bean初始化之前记录的,而我希望在bean初始化过程的最后(或尽可能接近最后)记录我的消息,就像StartupInfoLogger那样 有没有办法扩展这个类?是否

是否可以扩展Spring Boot
StartupInfoLogger
,以便在启动时打印更多信息

我的目标是记录一些与应用程序相关的信息,但使用

@PostConstruct
public void contextInitialized() {
    logger.info("My information");
}
这些信息是在各种bean初始化之前记录的,而我希望在bean初始化过程的最后(或尽可能接近最后)记录我的消息,就像
StartupInfoLogger
那样


有没有办法扩展这个类?是否有任何其他建议可以在不涉及
StartupInfoLogger
的情况下获得相同的结果?

我成功地实现了我想要的,创建了一个新类来实现
ApplicationListener

获取在启动时将此日志行正好放在日志末尾之前的结果:

2015-07-13 10:41:19,564 GMT [main] (StartEventListener.java:31) WARN  spring.StartEventListener: Module parsing started
2015-07-13 10:41:19,567 GMT [main] (StartupInfoLogger.java:56) INFO  parsing.Parsing: Started Parsing in 2.154 seconds (JVM running for 2.476)

您想记录什么以及什么时候记录?只是一些关于我正在启动的应用程序的信息,这些信息可以通过日志分析工具触发,以提高自动化程度。我想登录的时间可能是在应用程序启动之后,创建了所有bean。扩展
StartupInfoLogger
不会有任何作用。您可以创建一个
ApplicationListener
listener,当应用程序启动并准备好使用时将调用它。为什么还要麻烦使用一个私有的无参数构造函数呢?I fit不可能使用,那么就不要添加它。为您保存一些代码和丑陋的注释。我添加它是因为我继承了应该可以工作的父构造函数,并且我想100%确保我将拥有模块信息。关于丑陋的注释,你是对的,但我通常添加它是为了在我的IDE上没有警告。。。我想在这种情况下,我可以去掉它。如果你指定了一个构造函数,编译器就不会创建默认的构造函数。所以它不会增加任何东西,只是噪音。。。如果您只有一个构造函数,它接受一个
模块
,那么这永远是构造实例的唯一方法,但是通过添加反射,您可以创建一个无效实例,因为私有的无参数构造函数可用。如前所述,删除它,最好使
模块
字段最终@M.Deinum正确,指定私有无参数构造函数没有意义。它甚至允许使用反射和
AccessibleObject#setAccessible(boolean)
创建
StartEventListener
的实例。将其卸下,并使
模块
字段成为最终字段。通过这种方式,在不传递
模块的情况下实例化类几乎是不可能的。你绝对是对的!感谢您提供的线索,构造函数被移除,模块设置为最终版本!
/**
 * Listener for application start
 */
@Bean
public StartEventListener startListener() {
    return new StartEventListener(Module.PARSING);
}
2015-07-13 10:41:19,564 GMT [main] (StartEventListener.java:31) WARN  spring.StartEventListener: Module parsing started
2015-07-13 10:41:19,567 GMT [main] (StartupInfoLogger.java:56) INFO  parsing.Parsing: Started Parsing in 2.154 seconds (JVM running for 2.476)