更改Spring应用程序启动消息

时间:2015-05-18 05:12:55

标签: java spring spring-mvc spring-boot

我用spring boot来做样品服务。当我运行它时,它工作正常 命令行中的“java -jar DemoLibrary.war”命令。我得到了“图书馆应用程序已启动”的正确信息。

我在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应用程序启动消息。

有没有办法可以改变那条消息并按照我的意愿给出?

2 个答案:

答案 0 :(得分:5)

添加ApplicationListener<ContextRefreshedEvent>类型的类并将其注册为@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.");
            }
        };
    }
}

这样的事情应该在两种情况下都能正常工作而不会重复代码(尽管代码并不复杂但仍然如此)。

答案 1 :(得分:1)

您可以使用onStartup,例如:

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