更改Spring应用程序启动消息

Raj*_*ami 3 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.");
}
   }
Run Code Online (Sandbox Code Playgroud)

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

有没有办法可以改变那条消息,并按我想要的方式给出?

M. *_*num 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.");
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样的东西应该在两种情况下都能工作而不需要复制代码(尽管代码并不复杂但仍然如此).


小智 1

你可以使用onStartup,类似:

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