千家信息网

SpringBoot怎么实现启动时自动执行代码

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了SpringBoot怎么实现启动时自动执行代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么实现启动时自动执行代码文章都会有所收
千家信息网最后更新 2026年11月03日SpringBoot怎么实现启动时自动执行代码

这篇文章主要介绍了SpringBoot怎么实现启动时自动执行代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么实现启动时自动执行代码文章都会有所收获,下面我们一起来看看吧。

    前言

    目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。

    当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。

    java自身的启动时加载方式

    static代码块

    static静态代码块,在类加载的时候即自动执行。

    构造方法

    在对象初始化时执行。执行顺序在static静态代码块之后。

    Spring启动时加载方式

    @PostConstruct注解

    PostConstruct注解使用在方法上,这个方法在对象依赖注入初始化之后执行。

    ApplicationRunner和CommandLineRunner

    SpringBoot提供了两个接口来实现Spring容器启动完成后执行的功能,两个接口分别为CommandLineRunner和ApplicationRunner。

    这两个接口需要实现一个run方法,将代码在run中实现即可。这两个接口功能基本一致,其区别在于run方法的入参。ApplicationRunner的run方法入参为ApplicationArguments,为CommandLineRunner的run方法入参为String数组。

    何为ApplicationArguments

    官方文档解释为:

    "Provides access to the arguments that were used to run a SpringApplication.

    在Spring应用运行时使用的访问应用参数。即我们可以获取到SpringApplication.run(…)的应用参数。

    Order注解

    当有多个类实现了CommandLineRunner和ApplicationRunner接口时,可以通过在类上添加@Order注解来设定运行顺序。

    代码测试

    为了测试启动时运行的效果和顺序,编写几个测试代码来运行看看。

    TestPostConstruct

    @Componentpublic class TestPostConstruct {    static {        System.out.println("static");    }    public TestPostConstruct() {        System.out.println("constructer");    }    @PostConstruct    public void init() {        System.out.println("PostConstruct");    }}

    TestApplicationRunner

    @Component@Order(1)public class TestApplicationRunner implements ApplicationRunner{    @Override    public void run(ApplicationArguments applicationArguments) throws Exception {        System.out.println("order1:TestApplicationRunner");    }}

    TestCommandLineRunner

    @Component@Order(2)public class TestCommandLineRunner implements CommandLineRunner {    @Override    public void run(String... strings) throws Exception {        System.out.println("order2:TestCommandLineRunner");    }}

    执行结果

    关于"SpringBoot怎么实现启动时自动执行代码"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"SpringBoot怎么实现启动时自动执行代码"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

    代码 方法 接口 注解 运行 两个 顺序 功能 方式 知识 应用 测试 内容 参数 对象 时候 篇文章 静态 中实 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网科技 深圳互联网络科技有限公司 上海致骋互联网科技 互联网金融和金融科技 佩信高科技互联网 互联网科技公司的市场部门 现代科技和互联网有关系吗 哈尔滨新华互联网科技学院 来此购互联网科技有限公司 移动互联网年度科技创新 呼和浩特新华互联网科技学院 科技类公司包括互联网吗 中科明德北京互联网科技 工业互联网展湾科技股份有限公司 上海科技产业互联网平台 沐思想互联网科技有限公司 郑州欣桑互联网科技有限公司 珠海东科互联网科技有限公司 深圳互联网科技园地址 杭州科技互联网公司有哪些 互联网高科技 科技与互联网 上海互联网科技有限公司 未来的互联网科技 成都仁贤领冠互联网科技有限公司 宝灵互联网科技有限公司 乌苏新华互联网科技做什么的 工业互联网科技创业 萌小萌互联网科技河南有限公司 东风日产互联网科技公司叫什么
    0