SpringBoot中容器启动时如何实现初始化逻辑的配置步骤是?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1060个文字,预计阅读时间需要5分钟。
背景+传统+SpringMVC+项目中,我们可以定义容器初始化+Servlet,然后在web.xml中配置该Servlet+指定load-on-startup,容器启动后即可执行一些系统初始化逻辑。例如,设置全局资源文件。
背景
传统 SpringMVC 项目中,我们可以定义容器初始化 Servlet ,然后在 web.xml 配置该 Servlet ,指定 load-on-startup 就可以在容器启动后,执行一些系统的初始化逻辑。比如设置全局资源文件路径、加载系统定时任务、数据初始化等。
技术转换到 SpringBoot 的时候,该在哪里添加应用初始化的代码呢?
如果初始化逻辑中,有一些普通类,需要通过 Spring 的 ApplicationContext 的 getBean 获取依赖属性,如何保证 Spring 容器已经完成初始化完成、getBean 不会出现空指针呢?
本文将介绍这两个问题。
SpringBoot 启动类和应用监听器
首先,SpringBoot 启动类中可以添加应用的初始化逻辑,但是打包方式不同,添加的地方也有差异。
jar 包:使用内嵌 Tomcat 时,可以直接写在 main 函数中,且 SpringApplication.run 代码之前,容器未启动,此时无法获取 getBean 实例。war 包:外部部署时,main 函数中的方法不会被执行,可以在 configure 方法中添加初始化逻辑,此时容器未启动,无法获取 getBean 实例。
本文共计1060个文字,预计阅读时间需要5分钟。
背景+传统+SpringMVC+项目中,我们可以定义容器初始化+Servlet,然后在web.xml中配置该Servlet+指定load-on-startup,容器启动后即可执行一些系统初始化逻辑。例如,设置全局资源文件。
背景
传统 SpringMVC 项目中,我们可以定义容器初始化 Servlet ,然后在 web.xml 配置该 Servlet ,指定 load-on-startup 就可以在容器启动后,执行一些系统的初始化逻辑。比如设置全局资源文件路径、加载系统定时任务、数据初始化等。
技术转换到 SpringBoot 的时候,该在哪里添加应用初始化的代码呢?
如果初始化逻辑中,有一些普通类,需要通过 Spring 的 ApplicationContext 的 getBean 获取依赖属性,如何保证 Spring 容器已经完成初始化完成、getBean 不会出现空指针呢?
本文将介绍这两个问题。
SpringBoot 启动类和应用监听器
首先,SpringBoot 启动类中可以添加应用的初始化逻辑,但是打包方式不同,添加的地方也有差异。
jar 包:使用内嵌 Tomcat 时,可以直接写在 main 函数中,且 SpringApplication.run 代码之前,容器未启动,此时无法获取 getBean 实例。war 包:外部部署时,main 函数中的方法不会被执行,可以在 configure 方法中添加初始化逻辑,此时容器未启动,无法获取 getBean 实例。

