初始化执行时机

java自身

特性
构造注入
静态初始化块
实例初始化块
执行时机
在创建对象时,通过构造函数将依赖项注入到对象中
类加载时,第一次访问类时执行
创建对象时执行
作用范围
实例级别
类级别
实例级别
语法形式
通过构造函数参数进行注入
使用 static {} 块来定义
使用 {} 块来定义
依赖项传递
通过构造函数参数传递依赖项
不适用
不适用
初始化逻辑
可以执行一系列初始化操作,如属性赋值、依赖项初始化等
可以初始化静态变量、执行静态方法等
可以初始化实例变量、执行实例方法等
调用顺序
由构造函数调用顺序决定
在类加载时执行,与调用顺序无关
在创建对象时执行,与构造函数调用顺序无关
多次执行
每次创建对象时都需要进行构造注入
只执行一次
每次创建对象时都会执行
适用场景
对象依赖项注入、依赖项初始化等
静态变量初始化、静态方法调用等
实例变量初始化、实例方法调用等

SpringBoot

对于工具类可以适用 service 挂载启动事件,去进行初始化
执行时机
适用范围
参数/事件类型
执行时机
CommandLineRunner
所有 Bean
String[] args
应用程序启动后立即执行
ApplicationRunner
所有 Bean
ApplicationArguments args
应用程序启动后立即执行
@PostConstruct
单个 Bean
Bean 初始化完成后立即执行
ApplicationListener
所有 Bean
根据监听的事件类型而定
监听到对应事件发生时执行
自定义 Spring Boot Starter
所有 Bean
引入 Starter 时执行初始化逻辑
ServletContextInitializer
Servlet 应用程序
ServletContext、ServletRegistration...
Servlet 容器启动时执行
Spring Boot 生命周期事件监听器
所有 Bean
根据监听的事件类型而定
相应生命周期事件发生时执行自定义逻辑

工具类初始化

工具类适用 spring boot 管理的 util @Component 类上 @PostConstruct 方法上 启动的时候会自己直行
 
service注入适用 @Resource private PermissionService permissionService;
 
util 通过BeanUtil引入使用
 
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP