SpringBoot项目启动执行任务的多种方法小结
经过整理后得到以下几种常用方式,供大家参考。
1. 使用过滤器
init() :该方法在tomcat容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。可以在这个方法中补充想要执行的内容。
@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进行实现,启动后就去执行一次。
我们看下以上其中方法打印的顺序:
看到打印的信息后我们可以发现他们的执行顺序,filter是在最前面的。这几种方法经常会被用到,当我们的项目启动后需要调用对应的方法,用来项目的初始化等。
到此这篇关于SpringBoot项目启动执行任务的几种方式的文章就介绍到这了,更多相关SpringBoot启动执行任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决springboot遇到autowire注入为null的问题
这篇文章主要介绍了解决springboot遇到autowire注入为null的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03解决SpringBoot配置文件application.yml遇到的坑
这篇文章主要介绍了解决SpringBoot配置文件application.yml遇到的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02解决SpringBoot打成jar运行后无法读取resources里的文件问题
这篇文章主要介绍了解决SpringBoot打成jar运行后无法读取resources里的文件问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08IntelliJ IDEA报错Error:java: Compilation failed: internal java
今天小编就为大家分享一篇关于IntelliJ IDEA报错Error:java: Compilation failed: internal java compiler error的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-10-10
最新评论