@Component в Spring BootПо умолчанию Spring инициализирует все бины при старте приложения. Это удобно, но может замедлить запуск, особенно если есть тяжёлые компоненты — например, коннекторы к внешним сервисам, парсеры, или тяжёлые кэши.
📌 Решение — использовать ленивую инициализацию (
@Lazy):
@Component
@Lazy
public class HeavyComponent {
public HeavyComponent() {
System.out.println("HeavyComponent инициализирован");
}
}
Теперь бин будет создан только при первом обращении.
Можно также внедрять лениво:
@Component
public class SomeService {
private final HeavyComponent heavy;
public SomeService(@Lazy HeavyComponent heavy) {
this.heavy = heavy;
}
}
💡 Если у вас много таких компонентов — можно включить ленивую инициализацию глобально:
spring:
main:
lazy-initialization: true
⚠️ Осторожно: это может скрыть ошибки конфигурации до первого использования бина, что усложняет отладку. Используйте осознанно.
Идеально подходит для:
— микросервисов с быстрым стартом
— CLI-инструментов на Spring Boot
— задач с heavy startup logic
👉 @java_geek