更改 Spring 应用程序启动消息

Changing Spring Application Started Message

我使用 spring 启动来做一个示例服务。当我 运行 它使用时它工作正常 "java -jar DemoLibrary.war" 命令行中的命令。我收到 "Library Application Has Started".

的正确消息

我在 Appplication.java 文件中喜欢下面的内容;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class);
}

public static void main(String[] args) {
    ApplicationContext context = SpringApplication.run(Application.class, args);
    LogService.info(Application.class.getName(), "Library Application Has Started.");
}
   }

当我 运行 它在外部 tomcat 时,它启动正常,工作也正常。但我没有看到相同的消息,因为它不再使用该主要方法。我只看到 spring 应用程序启动消息。

有什么方法可以更改该消息并按我的意愿提供吗?

您可以使用 onStartup,例如:

@Override
public void onStartup(final ServletContext servletContext) throws ServletException {
    LogService.info(Application.class.getName(), "Library Application Has Started.");
    super.onStartup(servletContext);
}

添加 ApplicationListener<ContextRefreshedEvent> 类型 class 并将其注册为 @Bean

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public ApplicationListener<ContextRefreshedEvent> startupLoggingListener() {
        return new ApplicationListener<ContextRefreshedEvent>() {   
            public void onApplicationEvent(ContextRefreshedEvent event) {
                    LogService.info(Application.class.getName(), "Library Application Has Started.");
            }
        };
    }
}

像这样的东西应该在两种情况下都可以工作而无需重复代码(尽管代码并不复杂但仍然如此)。