首页 > 其他分享 >SpringBoot项目启动执行任务的几种方式

SpringBoot项目启动执行任务的几种方式

时间:2023-04-12 10:26:01浏览次数:35  
标签:SpringBoot 启动 void System 几种 添加 println public out

1、直接在启动类下面调用方法

@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
        System.out.println("在启动类添加初始下方法");
    }
}

2、使用@PostConstruct注解

@Component
public class MyInitStart2 {
    @PostConstruct
    public void run() {
        System.out.println("在MyInitStart2中添加初始下方法");
    }
}

3、实现CommandLineRunner接口

@Component
public class MyInitStart3 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        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、实现ApplicationListener接口

@Component
public class MyInitStart5 implements ApplicationListener<ApplicationStartedEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("在MyInitStart5中添加初始下方法");
    }
}

6、实现InitializingBean接口

@Component
public class MyInitStart6 implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("在MyInitStart6中添加初始下方法");
    }
}

7、使用过滤器

@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 后置");
    }
}

8、使用定时器方式

@Component
// 启用定时任务
@EnableScheduling
public class ScheduledTasks {

    // 每 5 秒执行一次任务。
    @Scheduled(cron = "0/5 * * * * ?")
    public void performingTasks() {
        System.out.println("在定时任务中添加初始化方法");
        // 停止定时任务 代码实现省略...
    }
}

以上几种方法的打印顺序:

  1. Filter 前置(过滤器

  2. 在MyInitStart6中添加初始下方法(实现InitializingBean接口

  3. 在MyInitStart2中添加初始下方法(使用@PostConstruct注解

  4. 在MyInitStart5中添加初始下方法(实现ApplicationListener接口

  5. 在MyInitStart4中添加初始下方法(实现ApplicationRunner接口

  6. 在MyInitStart3中添加初始下方法(实现CommandLineRunner接口

  7. 在启动类添加初始下方法(启动类

  8. 在定时任务中添加初始化方法(定时任务

标签:SpringBoot,启动,void,System,几种,添加,println,public,out
From: https://www.cnblogs.com/zhaojinhui/p/17308866.html

相关文章

  • 解决linux系统的kdump服务无法启动的问题
    问题:项目麒麟系统服务器的kdump服务无法启动,没有相关日志无法定位问题。1、查看服务状态是关闭的,重启系统也无法启动systemctlstatuskdump2、修改grub参数,修改“crashkernel”为“512M(有的机器数值太大太小都会导致报错,建议从128M开始试,或者加个high参数,如crashkernel=1024......
  • 使用 systemd 设置frp自启动
    这个示例将会演示在Linux系统下使用systemd控制frps及配置开机自启。在Linux系统下,使用systemd可以方便地控制frp服务端frps的启动和停止、配置后台运行和开启自启。要使用systemd来控制frps,需要先安装systemd,然后在/etc/systemd/system目录下创建一个frps.......
  • 《U8开发听我说》第七讲:现存量报表几种量来源
    现存量报表中的到货/在检数量、待发货数量、调拨在途数量、调拨待发数量分别来自于什么单据到货/在检数量:1.未生成入库单的到货单;2.入库单审核时修改现存量,则三种蓝字入库单仅保存;3.出库单审核时修改现存量,则三种红字出库单仅保存;4.红字销售发票(销售发票、零售日报、销售调......
  • p6spy 整合springboot
    1.导入pom<!--sql代理拦截,慢sql打印--><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version></dependency>2.配置自定义日志importcom.p6spy.engine.common.P6Util;......
  • SpringBoot 集成 MybatisPlus 六——ActiveRecord 增、删、改
    1向表中插入记录1.1插入所有列在创建实体对象时,指定所有字段的内容,包括ID列。@TestpublicvoidtestAddUser(){Useruser=newUser(20,"成吉思汗","男","一代天骄");booleanres=user.insert();System.out.println(res);}调用MyBatisPlus时,后台执行的......
  • SpringBoot实现文件图片上传并转换为虚拟路径
    页面代码<!DOCTYPEhtml><htmllang="en"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"><title>Title</title></head><body><formaction="/putpic......
  • 网页端debugger反调试的几种对抗方式
    简单总结下目前我掌握的几种对抗debugger反调试的方法,也欢迎大佬们有新的好用的方式补充。 首先写一个简单的html演示: 看下下面的这段JS,很简单,运行时做了一下验证,对比test方法的文本,如果不一样就通过setInterval无限调用debugger。functiontest(x,y){......
  • spark stream冷启动处理kafka中积压的数据
    因为首次启动JOB的时候,由于冷启动会造成内存使用太大,为了防止这种情况出现,限制首次处理的数据量spark.streaming.backpressure.enabled=truespark.streaming.backpressure.initialRate=200forexample:#!/bin/shTaskName="funnel"UserName="hadoop"cd`dirname$0`nohupsudo......
  • skywalking 监控 springboot项目
     部署探针打开idea开发工具Run-》EditConfigurations点击Modifyoptions-》AddVMoption-javaagent:E:\projectdeploy\apache-skywalking-apm-9.2.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar-Dskywalking.agent.service_name=service-mylesson-jav......
  • Springboot集成dubbo完整过程(三)
    准备工作1,准备mysql服务环境2,准备redis服务环境3,准备zookeeper服务环境4,准备逆向生成bean的xml配置文件5,准备slf4j日志xml配置文件6,准备一个sql脚本1,搭建创建服务工程1,创建一个空的父工程,用来统一管理依赖2,创建一个interface接口工程,主要存放业务bean,接口类3,创建一......