Spring Boot - Wait for web server to start

后端 未结 2 1138
予麋鹿
予麋鹿 2020-12-15 07:43

In my Spring Boot application I need to wait until the (default Tomcat) web server is fully initialized and ready to take traffic before I send messages to other application

2条回答
  •  爱一瞬间的悲伤
    2020-12-15 08:14

    Since Spring Boot 1.3.0 this can also be accomplished by implementing ApplicationListener

    example:

    public class MyApplicationListener implements ApplicationListener, Ordered {
    
        @Override
        public void onApplicationEvent(ApplicationReadyEvent event) {
            //do stuff now that application is ready
        }
    
        @Override
        public int getOrder() {
            return Ordered.LOWEST_PRECEDENCE;
        }
    }
    

    Also, as mentioned in the accepted answer, you can create a file named src/main/resources/META-INF/spring.factories listing your ApplicationListener. For example:

    org.springframework.context.ApplicationListener=com.example.MyApplicationListener
    

    however, in my case, I only needed this listener to run under a specific profile

    so I added the following property to application-.properties

    context.listener.classes=com.example.MyApplicationListener
    

提交回复
热议问题