SpringBoot項目啟動執(zhí)行任務的多種方法小結
經過整理后得到以下幾種常用方式,供大家參考。
1. 使用過濾器
init() :該方法在tomcat容器啟動初始化過濾器時被調用,它在 Filter 的整個生命周期只會被調用一次??梢栽谶@個方法中補充想要執(zhí)行的內容。
@Component
public class MyFilter implements Filter {
/**
* init() :該方法在tomcat容器啟動初始化過濾器時被調用,它在 Filter 的整個生命周期只會被調用一次。
* doFilter() :容器中的每一次請求都會調用該方法, FilterChain(放行) 用來調用下一個過濾器 Filter。
* destroy(): 當容器銷毀過濾器實例時調用該方法,在方法中銷毀或關閉資源,在過濾器 Filter 的整個生命周期也只會被調用一次。
*/
@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.實現InitializingBean接口,代碼如下:
@Component
public class MyInitStart2 implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("在MyInitStart2中添加初始下方法");
}
}3.實現ApplicationListener接口,代碼如下:
@Component
public class MyInitStart3 implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
System.out.println("在MyInitStart3中添加初始下方法");
}
}4.實現ApplicationRunner接口,代碼如下:
@Component
public class MyInitStart4 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("在MyInitStart4中添加初始下方法");
}
}5.實現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.直接在啟動類下面調用方法
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
ConfigurableApplicationContext run = SpringApplication.run(YabaoApplication.class, args);
System.out.println("在啟動類添加初始下方法");
}其實我們也可以使用springboot定時器@Scheduled進行實現,啟動后就去執(zhí)行一次。
我們看下以上其中方法打印的順序:

看到打印的信息后我們可以發(fā)現他們的執(zhí)行順序,filter是在最前面的。這幾種方法經常會被用到,當我們的項目啟動后需要調用對應的方法,用來項目的初始化等。
到此這篇關于SpringBoot項目啟動執(zhí)行任務的幾種方式的文章就介紹到這了,更多相關SpringBoot啟動執(zhí)行任務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot中Zookeeper分布式鎖的原理和用法詳解
Zookeeper是一個分布式協調服務,它提供了高可用、高性能、可擴展的分布式鎖機制,SpringBoot是一個基于Spring框架的開發(fā)框架,它提供了對Zookeeper分布式鎖的集成支持,本文將介紹SpringBoot中的 Zookeeper分布式鎖的原理和使用方法,需要的朋友可以參考下2023-07-07

