ApplicationListenerf4b06c38ff2750052547656f66f34e34 不建議
@Service public class SearchReceive implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次 //需要执行的方法 } } }ee :springboot的ApplicationRunner介面ApplicationListener和CommandLineRunner兩個介面是springBoot提供用來在spring容器載入完成後執行指定方法。兩個介面區別主要是入參不同。 實作ApplicationRunner介面
@Component @Order(value = 1) public class AfterRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("执行方法"); } }方法3:springboot的CommandLineRunner介面實作CommandLineRunner介面
@Component @Order(value = 2) public class CommandLineRunnerImpl implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("执行方法"); } }
@Slf4j @Component public class RunnerTest implements ApplicationRunner, CommandLineRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("服务启动RunnerTest ApplicationRunner执行启动加载任务..."); } @Override public void run(String... args) throws Exception { System.out.println("服务启动RunnerTest CommandLineRunner 执行启动加载任务..."); } } }2 指定執行順序當專案中同時實作了ApplicationRunner和CommondLineRunner介面時,可使用Order註解或實作Ordered介面來指定執行順序,數值越小越先執行。 3 原理SpringApplication 的run方法會執行afterRefresh方法。 afterRefresh方法會執行callRunners方法。 callRunners方法會呼叫所有實作ApplicationRunner和CommondLineRunner介面的方法。
以上是springboot專案啟動後的執行方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!