Я думаю, что, как было сказано ранее, здесь единственный эффект - инициализировать stati c вещи (поля и классы).
пример, если вы посмотрите на код ConversionServiceInitializer: 3 stati c boolean инициализируются путем проверки наличия определенных классов c в классе
private static final boolean jsr354Present = ClassUtils.isPresent(
"javax.money.MonetaryAmount", DefaultFormattingConversionService.class.getClassLoader());
private static final boolean jsr310Present = ClassUtils.isPresent(
"java.time.LocalDate", DefaultFormattingConversionService.class.getClassLoader());
private static final boolean jodaTimePresent = ClassUtils.isPresent(
"org.joda.time.LocalDate", DefaultFormattingConversionService.class.getClassLoader());
Конструктор по умолчанию для ConversionServiceInitializer также косвенно вызывает инициализацию всех преобразователей по умолчанию
publi c DefaultFormattingConversionService ()
-> this (null, true);
->
DefaultConversionService.addDefaultConverters(this);
if (registerDefaultFormatters) {
addDefaultFormatters(this);
}
каждый из 2 вызовов
- DefaultConversionService .addDefaultConverters (this)
- и addDefaultFormatters (this)
инициализируют несколько форматеров и преобразователей по умолчанию. у большинства из них нет статической c инициализации, но у некоторых есть.
Инициализация экземпляра DefaultConversionService в начале приложения позволяет инициализировать все конвертеры при запуске, чтобы они не выполняли ленивую инициализацию в момент, когда пользователь ждет ответа ...