SpringBoot項目啟動執(zhí)行任務(wù)的多種方法小結(jié)
經(jīng)過整理后得到以下幾種常用方式,供大家參考。
1. 使用過濾器
init() :該方法在tomcat容器啟動初始化過濾器時被調(diào)用,它在 Filter 的整個生命周期只會被調(diào)用一次。可以在這個方法中補充想要執(zhí)行的內(nèi)容。
@Component
public class MyFilter implements Filter {
/**
* init() :該方法在tomcat容器啟動初始化過濾器時被調(diào)用,它在 Filter 的整個生命周期只會被調(diào)用一次。
* doFilter() :容器中的每一次請求都會調(diào)用該方法, FilterChain(放行) 用來調(diào)用下一個過濾器 Filter。
* destroy(): 當容器銷毀過濾器實例時調(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進行實現(xiàn),啟動后就去執(zhí)行一次。
我們看下以上其中方法打印的順序:

看到打印的信息后我們可以發(fā)現(xiàn)他們的執(zhí)行順序,filter是在最前面的。這幾種方法經(jīng)常會被用到,當我們的項目啟動后需要調(diào)用對應(yīng)的方法,用來項目的初始化等。
到此這篇關(guān)于SpringBoot項目啟動執(zhí)行任務(wù)的幾種方式的文章就介紹到這了,更多相關(guān)SpringBoot啟動執(zhí)行任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Batch遠程分區(qū)的本地Jar包模式的代碼詳解
這篇文章主要介紹了Spring Batch遠程分區(qū)的本地Jar包模式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
相冊管理系統(tǒng)(Java表單+xml數(shù)據(jù)庫存儲)
這篇文章主要為大家詳細介紹了相冊管理系統(tǒng)的實現(xiàn)步驟,Java表單的文件上傳和下載,xml數(shù)據(jù)庫存儲信息,感興趣的小伙伴們可以參考一下2016-07-07
struts2中通過json傳值解決亂碼問題的實現(xiàn)方法
這篇文章主要介紹了struts2中通過json傳值解決亂碼問題的實現(xiàn)方法,涉及js編碼及java解碼的相關(guān)操作技巧,需要的朋友可以參考下2016-06-06

