SpringBoot项目启动执行任务的多种方法小结

 更新时间:2023年07月05日 11:28:11   作者:傻鱼爱编程  
这篇文章主要介绍了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启动执行任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中内存分配的几种方法

    Java中内存分配的几种方法

    本文主要介绍Java中几种分配内存的方法。我们会看到如何使用sun.misc.Unsafe来统一操作任意类型的内存。以前用C语言开发的同学通常都希望能在Java中通过较底层的接口来操作内存,他们一定会对本文中要讲的内容感兴趣
    2014-03-03
  • Hibernate一对多关联双向关联代码实现分享

    Hibernate一对多关联双向关联代码实现分享

    Hibernate一对多关联双向关联代码实现分享,大家参考使用吧
    2013-12-12
  • Gauva使用ListenableFuture介绍说明

    Gauva使用ListenableFuture介绍说明

    并发是一个困难问题,但是通过强大和强大的抽象能够显著的简化工作。为了简化问题,Gauva使用ListenableFuture扩展了JDK的Future接口,这篇文章主要介绍了Gauva使用ListenableFuture
    2023-01-01
  • Struts2中图片以base64方式上传至数据库

    Struts2中图片以base64方式上传至数据库

    这篇文章主要介绍了Struts2中图片以base64方式上传至数据库的实现代码,代码分为前台和后台两段,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 在Spring中编写事务的介绍

    在Spring中编写事务的介绍

    今天小编就为大家分享一篇关于在Spring中编写事务的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Spring中的自定义NamespaceHandler详解

    Spring中的自定义NamespaceHandler详解

    这篇文章主要介绍了Spring中的自定义NamespaceHandler详解,通常情况下,Spring生态圈提供的功能已足够使用,但不排除特殊情况下,需要匹配特殊及复杂的业务情况,Spring提供了可扩展Schema支持,可以自定义命名空间进行配置及解析,需要的朋友可以参考下
    2023-11-11
  • java中JVM中如何存取数据和相关信息详解

    java中JVM中如何存取数据和相关信息详解

    这篇文章主要介绍了JVM中如何存取数据和相关信息详解,Java源代码文件(.java后缀)会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。JVM中怎么存取数据和相关信息呢?,需要的朋友可以参考下
    2019-06-06
  • Java实现解析Excel复杂表头

    Java实现解析Excel复杂表头

    这篇文章主要为大家详细介绍了如何使用Java实现解析Excel复杂表头功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-01-01
  • SpringBoot中Zookeeper分布式锁的原理和用法详解

    SpringBoot中Zookeeper分布式锁的原理和用法详解

    Zookeeper是一个分布式协调服务,它提供了高可用、高性能、可扩展的分布式锁机制,SpringBoot是一个基于Spring框架的开发框架,它提供了对Zookeeper分布式锁的集成支持,本文将介绍SpringBoot中的 Zookeeper分布式锁的原理和使用方法,需要的朋友可以参考下
    2023-07-07
  • java微信server录音下载到自己server

    java微信server录音下载到自己server

    这篇文章主要为大家详细介绍了java微信server录音下载到自己server的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05

最新评论