spring - 如何在代码中获取 Spring 应用程序启动时间/持续时间

标签 spring spring-boot

当我启动 Spring 应用程序时,我可以在控制台中看到启动时间(我使用的是 IntelliJ IDEA)。

例如,下面的日志显示应用程序的启动时间为 13.427 秒。

2016-12-29 13:58:05.491     : Starting Application on 8DSXD72 with PID 14120 
2016-12-29 13:58:05.518     : Running with Spring Boot v1.4.1.RELEASE, Spring v4.3.3.RELEASE
2016-12-29 13:58:05.519     : The following profiles are active: LOCAL
2016-12-29 13:58:15.537     : JMX is disabled
....
2016-12-29 13:58:17.392     : Started Application in 13.427 seconds (JVM running for 14.71)

有没有办法在代码中获得这个启动时间?我想在 Spring 中打印出应用程序启动时间 /info端点。

最佳答案

这个答案基于 Sotirios 的评论。

首先,创建一个实现 SpringApplicationRunListener 的自定义类.

package com.example;

public class AppListener implements SpringApplicationRunListener {
    public static long appStartTime;
    public static long appFinishTime;

    //Constructor is required.
    public AppListener(SpringApplication application, String[] args) {
    }

    @Override
    public void started() {
        appStartTime = System.currentTimeMillis();
    }

    @Override
    public void environmentPrepared(ConfigurableEnvironment environment) {

    }

    @Override
    public void contextPrepared(ConfigurableApplicationContext context) {

    }

    @Override
    public void contextLoaded(ConfigurableApplicationContext context) {

    }

    @Override
    public void finished(ConfigurableApplicationContext context, Throwable exception) {
        appFinishTime = System.currentTimeMillis();
    }
}

然后,将此行添加到 spring.factories文件。
org.springframework.boot.SpringApplicationRunListener=com.example.AppListener

关于spring - 如何在代码中获取 Spring 应用程序启动时间/持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385832/

相关文章:

spring - 意外的 Vaadin session 过期和并行 Spring Boot 应用程序

java - 为 Loading Cache guava 编写测试用例

spring-boot - 使用gradle将Zip文件上传到nexus

java - 自定义存储库基类 + QueryDslPredicateExecutor

java - Spring ResponseStatusException 不返回原因

java - 没有合格的bean,使用Spring Data JPA设置2个数据源

java - 如何订购AOP切面和MVC拦截器?

java - 使用 Java 8 构造时创建 Bean 时出现 ArrayOutOfBoundsException

java - 添加带有 spring security 的自定义登录 Controller

java - 无法构建 Spring maven 项目,POM.XMl 文件中出现问题