首页 > 其他分享 >SpringBoot项目启动时初始化操作方式

SpringBoot项目启动时初始化操作方式

时间:2023-04-01 15:35:17浏览次数:44  
标签:info 初始化 log 启动 void Component init public SpringBoot

1.实现InitializingBean重写afterPropertiesSet()方法。

@Component
@Slf4j
public class InitOneTest implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        log.info("InitOneTest init success");
    }
}

2.注解@PostConstruct

在类构造方法之后执行

@Component
@Slf4j
public class InitTwoTest {
    @PostConstruct
    public void init(){
      log.info("InitTwoTest init success");
    }
}

3.实现CommandLineRunner,重写run()方法

@Component
@Slf4j
@Order(1)// 启动顺序
public class InitThreeTest implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("InitThreeTest initial success");
    }
}

4.实现ApplicationRunner,重写run()方法

@Component
@Slf4j
@Order(2)// 启动顺序
public class InitFourTest implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("InitFourTest init success");
    }
}

5.实现监听器ApplicationListener

注意点:这种方式在springmvc-spring的项目中使用的时候会出现执行两次的情况。这种是因为在加载spring和springmvc的时候会创建两个容器,都会触发这个事件的执行。这时候只需要在onApplicationEvent方法中判断是否有父容器即可

@Component
@Slf4j
public class InitFiveTest implements ApplicationListener<ContextRefreshedEvent> {
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        if(event.getApplicationContext().getParent() == null){
            log.info("InitFiveTest init success");
        }
    }
}

启动顺序截图:

image

标签:info,初始化,log,启动,void,Component,init,public,SpringBoot
From: https://www.cnblogs.com/csh-java/p/17278687.html

相关文章

  • springboot和redis执行lua脚本——踩坑
    问题:原先想使用redis执行lua脚本作为项目限流基础,lua脚本后写完后执行一直报错如下图:  卡了几天了,没看明白咋回事,一次偶然试了一下解决了,传递lua参数需要时String类型难怪说报错强转String类型异常  灵感来源参考文章:踩坑之RedisTemplate执行Lua脚本-知乎(zhihu.c......
  • Springboot 系列 (26) - Springboot+HBase 大数据存储(四)| Springboot 项目通过 HBase
    ApacheHBase是Java语言编写的一款Apache开源的NoSQL型数据库,不支持SQL,不支持事务,不支持Join操作,没有表关系。ApacheHBase构建在ApacheHadoop和ApacheZookeeper之上。ApacheHBase:https://hbase.apache.org/HBase的安装配置,请参考“Springboot系列(24)-......
  • android - AsyncTask 完成后重新启动完整的 Android 应用程序
    我正在编写的应用程序会检查/sdcard下的目录中是否有特殊的ZIP文件,如果没有则开始下载并解压缩它。下载和解压缩工作得很好,即使是子目录。但我需要在完成后重新启动该应用程序-但这是行不通的。起初我有一个特殊的Activity“PreMainActivity.java”只是为了重启目的:imp......
  • 项目一众筹网05_0项目阶段性总结,SSM框架_项目开发注意事项,,不要随意动框架预定好的结构
    系列文章目录文章目录系列文章目录一、框架搭建好之后,项目开发阶段,各就各位,尽量不要新建包名二、mybatis里面sql结束不要带分号三:实体的属性名最好跟数据库的字段保持一模一样,这样mybatis才不会因为大小写什么的而识别不了四:不是主键可以添加唯一约束吗五、idea里面的配置,需要注意......
  • SpringBoot 项目说明
    1、SpringBoot中pom.xml的特点(1)继承了spring-boot-starter-parent父工程打开项目的pom.xml文件,如下代码:<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</versi......
  • SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)
    SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)搜到大部分打包exe的文章都是使用exe4j打包步骤贼多,安装麻烦,打包麻烦收费软件,公司使用会吃律师函JDK14以上可以使用JDK自带的jpackage打包JDK自带,一行命令搞定生成的程序包括java环境,用户不需要安装java实测环境......
  • SpringBoot 介绍
    1、定义SpringBoot是由Pivotal团队在2013年开始研发,2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置,简化了Spring项目的初始搭建和开发过程。Boot是启动的意思,SpringBoot本......
  • SpringBoot下动态数据源
    第一种:Mybatis-Plus的dynamic-datasourceGitee地址:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter要实现其实很简单,一个注解就可以了1、创建两个一库,一样的表进行测试2、搭建SpringBoot引入dynamic-datasource依赖<dependency><groupId>com.baomidou......
  • SpringBoot微服务集成keycloak实现跨平台统一认证授权
    //项目架构微服务划分://auth认证微服务实现登录认证拦截,获取token//gateway网关微服务//user用户微服务用户权限管理//system系统微服务核心逻辑处理//xxx其他微服务//common模块//1、common模块引入keycloak认证相关依赖<properties><keyc......
  • SpringBoot中常见的各种初始化场景分析
    大家能区分出以下各种初始化适用的场景吗ApplicationRunner,CommandLineRunner,BeanFactoryPostProcessor,InitializingBean,BeanPostProcessor首先可以简单分类Springboot的钩子        1,ApplicationRunner        2,CommandLineRunner上述2个钩子其实没啥......