Java程序初始化启动自动执行的三种方式

 更新时间:2024年01月30日 10:28:54   作者:是菜菜的小严惜哎  
这篇文章主要介绍了Java程序初始化启动自动执行的三种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java程序初始化启动自动执行的三种方式

@PostConstruct注解

将此注解加在要执行的方法上,则程序初始化启动的时候,会执行此方法,一般用来初始化必要的程序初始信息

注意:

加了postconstruct注解的方法,如果执行失败,整个程序会无法正常启动!这个方法执行不完,整个程序也启动不了!!!

详情请看我的错误总结  开发错误总结---@PostConstruct注解导致的程序无法启动(@PostConstruct的执行)

开始试验:

  • 启动类
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class,args);
    }
}
  • 测试类
@Service
@Slf4j
public class PostConstructTest {
 
    @PostConstruct
    public void testPostConstruct () {
      log.info("程序初始化执行");
    }
 
}
  • 启动看效果

CommandLineRunner接口

  • 实现 CommandLineRunner接口
@Slf4j
@Component
public class InitCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("实现CommandLineRunner接口的程序初始化");
    }
}
  • 启动看效果

ApplicationRunner 接口

  • 实现 ApplicationRunner 接口
@Component
@Slf4j
public class InitApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("实现ApplicationRunner接口程序初始化");
    }
}
  • 启动看效果

@Order注解设置启动顺序

我们给前两个实现ApplicationRunner 接口和CommandLineRunner 接口的启动类设置启动顺序

  • 为了让效果明显一点,我们让程序执行完第一个之后睡眠一下
@Slf4j
@Component
@Order(value = 1)
public class InitCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("实现CommandLineRunner接口的程序初始化");
        Thread.sleep(2000);
    }
}
@Component
@Slf4j
@Order(value = 2)
public class InitApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("实现ApplicationRunner接口程序初始化");
    }
}
  • 执行一下来看效果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot 使用Mongo的GridFs实现分布式文件存储操作

    SpringBoot 使用Mongo的GridFs实现分布式文件存储操作

    这篇文章主要介绍了Spring Boot 使用Mongo的GridFs实现分布式文件存储操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Springboot整合https的实例代码

    Springboot整合https的实例代码

    本文简单介绍了一些密码学的基础和如何通过Springboot整合HTTPS,本文将通过实例代码给大家详细介绍整合过程,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • JDK8环境中使用struts2的步骤详解

    JDK8环境中使用struts2的步骤详解

    这篇文章主要给大家介绍了关于在JDK8环境中使用struts2的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MyBatisPlus3如何向数据库中存入List

    MyBatisPlus3如何向数据库中存入List

    本文主要介绍了Mybatis Plus的类型处理器的使用,通过User.java和UserMapper.xml示例进行详细的解析,并提供了JSON解析器的使用方法,希望通过这篇文章,可以帮助大家更好的理解和掌握Mybatis Plus的类型处理器
    2024-10-10
  • Spring ApplicationContext上下文核心容器深入探究

    Spring ApplicationContext上下文核心容器深入探究

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2023-01-01
  • Arthas在线java进程诊断工具在线调试神器详解

    Arthas在线java进程诊断工具在线调试神器详解

    Arthas是 Alibaba 开源的Java诊断工具,深受开发者喜爱。这篇文章主要介绍了Arthas在线java进程诊断工具 在线调试神器,需要的朋友可以参考下
    2021-11-11
  • Java使用JSON实现处理中文乱码和Date格式

    Java使用JSON实现处理中文乱码和Date格式

    这篇文章主要为大家详细介绍了Java如何在项目中使用JSON实现处理中文乱码和Date格式的功能,文中的示例代码讲解详细,需要的小伙伴可以参考一下
    2023-06-06
  • Java8中方便又实用的Map函数总结

    Java8中方便又实用的Map函数总结

    java8之后,常用的Map接口中添加了一些非常实用的函数,可以大大简化一些特定场景的代码编写,提升代码可读性,快跟随小编一起来看看吧
    2022-11-11
  • 实例分析Java Class的文件结构

    实例分析Java Class的文件结构

    今天把之前在Evernote中的笔记重新整理了一下,发上来供对java class 文件结构的有兴趣的同学参考一下
    2013-04-04
  • Java实战角色权限后台脚手架系统的实现流程

    Java实战角色权限后台脚手架系统的实现流程

    只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+Springboot+Maven+myBaits-Plus+Vue+Element-UI+Mysql实现一个角色权限后台脚手架系统,大家可以在过程中查缺补漏,提升水平
    2022-01-01

最新评论