在spring容器进行初始化的过程中,每到一个阶段,都会发布相应的SpringApplicationEvent通知监听相应event的listener。BackgroundPreinitializer就是一个ApplicationListener。
BackgroundPreinitializer 后台预初始化器在监听到ApplicationStartingEvent事件时,开始做相应的初始化。
初始化的内容包括:
@Override
public void run() {
//1、转换器初始化
runSafely(new ConversionServiceInitializer());
//2、对于各种校验的预初始化
runSafely(new ValidationInitializer());
runSafely(new MessageConverterInitializer());
runSafely(new JacksonInitializer());
runSafely(new CharsetInitializer());
preinitializationComplete.countDown();
}
1、ConversionService
转换服务是spring核心模块之一,作用是实现从一个类型转换为另外一个类型。
spring内置的默认转换器包含以下的转换
第1类:标量的转换,各个类型与字符串的转换
private static void addScalarConverters(ConverterRegistry converterRegistry) {
//下面新增的转换器,光看名字就可以看出来是从什么类型就转换到什么类型
converterRegistry.addConverterF