经过整理后得到以下几种常用方式,供大家参考。

1. 使用过滤器

init() :该方法在tomcat容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。可以在这个方法中补充想要执行的内容。

@Component
public class MyFilter implements Filter {/*** init() :该方法在tomcat容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。* doFilter() :容器中的每一次请求都会调用该方法, FilterChain(放行) 用来调用下一个过滤器 Filter。* destroy(): 当容器销毁过滤器实例时调用该方法,在方法中销毁或关闭资源,在过滤器 Filter 的整个生命周期也只会被调用一次。*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("Filter 前置");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("Filter 处理中");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {System.out.println("Filter 后置");}
}

2.实现InitializingBean接口,代码如下:

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

3.实现ApplicationListener接口,代码如下:

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

4.实现ApplicationRunner接口,代码如下:

@Component
public class MyInitStart4 implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("在MyInitStart4中添加初始下方法");}
}

5.实现CommandLineRunner接口,代码如下:

@Component
public class MyInitStart5 implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("在MyInitStart5中添加初始下方法");}
}

6.使用@PostConstruct注解,代码如下:

@Component
public class MyInitStart6 {@PostConstructpublic 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项目启动执行任务的几种方式相关推荐

  1. Springboot项目启动的三种方式

    springboot的启动方式主要有三种 运行带有main方法类 配置请求参数 通过命令行 java -jar 的方式:java -jar xxx.jar --server.port=8081 jav ...

  2. Spring Boot项目启动的几种方式

    Spring Boot项目启动的几种方式 方式一:右击启动或者点击intellij右上角的启动按钮 我们访问下浏览器看一下效果 方式二:利用maven启动 我们先进入到项目文件下,然后执行命令   m ...

  3. SpringBoot—项目启动时几种初始化操作及SpringApplication类详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在使用Spring Boot搭建项目时,启动项目工程,经常遇到一些需要启动初始化数据或者资源的需求,比如提前加载某个配置文件内容 ...

  4. 轻轻松松学习SpringBoot2:第十一篇: Spring Boot项目启动的几种方式

    方式一:右击启动或者点击intellij右上角的启动按钮 我们访问下浏览器看一下效果 方式二:利用maven启动 我们先进入到项目文件下,然后执行命令   mvn spring-boot:run 然后 ...

  5. SpringBoot定时任务实现的两种方式介绍

    今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...

  6. Springboot 项目启动后执行某些自定义代码

    Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...

  7. 使用springboot创建javafx的几种方式

    引言 springboot开发项目现在是java开发的主流,springboot也集成了很多功能,如aop和表单检测,比常规的单体Javafx项目或者maven项目要好用多,springboot开发J ...

  8. Springboot项目启动前执行数据库初始化脚本

    背景:项目里面遇到了要在springboot项目启动前做数据库初始化的需求.总结一下几种方案: 1.使用flywaydb,启动工程的时候同时初始化脚本.集成倒是不难,主要是要解决bean的顺序加载问题 ...

  9. 又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式

    又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式 部署思路: 具体步骤: 1.打成jar 2.上传到服务器 3.启动JDK容器 4.进入JDK 容器 启动 项 ...

最新文章

  1. 看闯关东原来知道古代已经十六进制了
  2. django学习笔记【003】创建第一个带有model的app
  3. 交换esc和左ctrl ;caps lock与右ctrl
  4. 使用 IDEA 开发工具(版本为 IntelliJ IDEA 14.1.4)打可执行jar包的操作步骤
  5. js组合模式和寄生组合模式的区别研究
  6. Linux 常用命令使用方法
  7. 撕掉“丑”的标签,体素是如何让游戏更有趣的?
  8. vlc android 移植版编译
  9. 【CF1349D】Slime and Biscuits【概率期望】【解方程】
  10. 20w7珠led驱动电源电路图_LED驱动电源:用TL431做的几个恒流电路分享!
  11. 使用和了解Valgrind核心:高级主题
  12. SpringBoot 实现热部署有哪几种方式
  13. 3分钟学会python_3分钟学会使用Python推荐系统库Surprise
  14. 如何在Visual Studio 2012中撤消“范围到此”?
  15. python opencv 利用 GrabCut 算法(opencv已经实现)从图像中分离出前景
  16. 玩转树莓派——支持XBOX手柄
  17. 深圳雷赛智能自动控制软件使用说明(运动控制卡)
  18. 简单的C语言顺序结构例题介绍
  19. Python编程:从入门到实践.pdf :Python 基础笔记,最基本的 Python语法,快速上手入门 Python
  20. Handler的理解、用法以及运行机制原理

热门文章

  1. js 常规打水印方法 canvas方法
  2. 微信小程序 自定义组件中 triggerEvent() 函数失效的一种情况 (Cannot read property ‘triggerEvent‘ of undefined)
  3. 进阶渲染系列(七)——三向贴图(任意表面纹理化)【进阶篇完结】
  4. unity 完美像素_像素完美
  5. 移动机器人差速轮运动学模型
  6. Tableau学习总结
  7. MacBooster8全新Mac系统清理优化工具
  8. 2维照片生成3维模型_如何使用2维模型跟踪状态
  9. vue 搜索文本让搜索的字体高亮显示
  10. VMware ESXi 8.0b Unlocker OEM BIOS 集成 REALTEK 网卡驱动和 NVMe 驱动 (集成驱动版)