Runner启动器
Runner启动器的两种创建方式:
- 实现ApplicationRunner接口,复写run()方法
- 实现CommandLineRunner接口,复写run()方法
Runner启动器的执行顺序
如果一个项目中包含多个启动器,可以让启动器类实现 org.springframework.core.Ordered
接口或者使用 org.springframework.core.annotation.Order
注解类来注解启动器类。项目启动时会按照指定的order升序执行。
Runner启动器的创建示例
示例一:实现ApplicationRunner接口
package com.huang.pims.demo.runners; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Component @Order(value = 1) public class ApplicationRunnerDemo implements ApplicationRunner, Ordered { private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationRunnerDemo.class); @Override public void run(ApplicationArguments args) throws Exception { LOGGER.info("order:{} ApplicationRunnerDemo.run()...", getOrder()); } @Override public int getOrder() { return 1; } }
示例二:实现CommandLineRunner接口
package com.huang.pims.demo.runners; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; @Component public class CommandLineRunnerDemo implements CommandLineRunner, Ordered { private static final Logger LOGGER = LoggerFactory.getLogger(CommandLineRunnerDemo.class); @Override public void run(String... args) throws Exception { LOGGER.info("order:{} CommandLineRunner.run()...", getOrder()); } @Override public int getOrder() { return 0; } }
以上两种创建方式,都需要使用@Component注解将之添加到Spring IOC容器中,这样,项目在启动时就会自动执行Runner启动器中的run()方法。
启动项目后的效果如下: