SpringBoot項目啟動執(zhí)行任務(wù)的多種方法小結(jié)
經(jīng)過整理后得到以下幾種常用方式,供大家參考。
1. 使用過濾器
init() :該方法在tomcat容器啟動初始化過濾器時被調(diào)用,它在 Filter 的整個生命周期只會被調(diào)用一次。可以在這個方法中補(bǔ)充想要執(zhí)行的內(nèi)容。
@Component
public class MyFilter implements Filter {
/**
* init() :該方法在tomcat容器啟動初始化過濾器時被調(diào)用,它在 Filter 的整個生命周期只會被調(diào)用一次。
* doFilter() :容器中的每一次請求都會調(diào)用該方法, FilterChain(放行) 用來調(diào)用下一個過濾器 Filter。
* destroy(): 當(dāng)容器銷毀過濾器實例時調(diào)用該方法,在方法中銷毀或關(guān)閉資源,在過濾器 Filter 的整個生命周期也只會被調(diào)用一次。
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter 前置");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("Filter 處理中");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("Filter 后置");
}
}2.實現(xiàn)InitializingBean接口,代碼如下:
@Component
public class MyInitStart2 implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("在MyInitStart2中添加初始下方法");
}
}3.實現(xiàn)ApplicationListener接口,代碼如下:
@Component
public class MyInitStart3 implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
System.out.println("在MyInitStart3中添加初始下方法");
}
}4.實現(xiàn)ApplicationRunner接口,代碼如下:
@Component
public class MyInitStart4 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("在MyInitStart4中添加初始下方法");
}
}5.實現(xiàn)CommandLineRunner接口,代碼如下:
@Component
public class MyInitStart5 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("在MyInitStart5中添加初始下方法");
}
}6.使用@PostConstruct注解,代碼如下:
@Component
public class MyInitStart6 {
@PostConstruct
public void run() {
System.out.println("在MyInitStart6中添加初始下方法");
}
}7.直接在啟動類下面調(diào)用方法
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
ConfigurableApplicationContext run = SpringApplication.run(YabaoApplication.class, args);
System.out.println("在啟動類添加初始下方法");
}其實我們也可以使用springboot定時器@Scheduled進(jìn)行實現(xiàn),啟動后就去執(zhí)行一次。
我們看下以上其中方法打印的順序:

看到打印的信息后我們可以發(fā)現(xiàn)他們的執(zhí)行順序,filter是在最前面的。這幾種方法經(jīng)常會被用到,當(dāng)我們的項目啟動后需要調(diào)用對應(yīng)的方法,用來項目的初始化等。
到此這篇關(guān)于SpringBoot項目啟動執(zhí)行任務(wù)的幾種方式的文章就介紹到這了,更多相關(guān)SpringBoot啟動執(zhí)行任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Hibernate一對多關(guān)聯(lián)雙向關(guān)聯(lián)代碼實現(xiàn)分享
Hibernate一對多關(guān)聯(lián)雙向關(guān)聯(lián)代碼實現(xiàn)分享,大家參考使用吧2013-12-12
Struts2中圖片以base64方式上傳至數(shù)據(jù)庫
這篇文章主要介紹了Struts2中圖片以base64方式上傳至數(shù)據(jù)庫的實現(xiàn)代碼,代碼分為前臺和后臺兩段,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
java中JVM中如何存取數(shù)據(jù)和相關(guān)信息詳解
這篇文章主要介紹了JVM中如何存取數(shù)據(jù)和相關(guān)信息詳解,Java源代碼文件(.java后綴)會被Java編譯器編譯為字節(jié)碼文件,然后由JVM中的類加載器加載各個類的字節(jié)碼文件,加載完畢之后,交由JVM執(zhí)行引擎執(zhí)行。JVM中怎么存取數(shù)據(jù)和相關(guān)信息呢?,需要的朋友可以參考下2019-06-06
SpringBoot中Zookeeper分布式鎖的原理和用法詳解
Zookeeper是一個分布式協(xié)調(diào)服務(wù),它提供了高可用、高性能、可擴(kuò)展的分布式鎖機(jī)制,SpringBoot是一個基于Spring框架的開發(fā)框架,它提供了對Zookeeper分布式鎖的集成支持,本文將介紹SpringBoot中的 Zookeeper分布式鎖的原理和使用方法,需要的朋友可以參考下2023-07-07

