spring-context-indexerПри старте Spring Boot-приложения много времени уходит на classpath scanning. Даже если вы используете
@ComponentScan, Spring всё равно перебирает кучу классов в поиске бин-кандидатов. Это рефлексивно и медленно.📌 Есть способ это оптимизировать —
spring-context-indexer.🔧 Что делать
1. Добавьте зависимость в
pom.xml:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-indexer</artifactId>
<version>6.1.3</version> <!-- актуальная для Spring Boot 3 -->
<optional>true</optional>
</dependency>
2. Всё! Spring Boot на этапе компиляции сгенерирует индекс классов с аннотациями (
@Component, @Service, @Repository, и т.п.) в META-INF/spring.components.3. При старте приложения Spring сначала смотрит в индекс, а не сканирует classpath целиком.
💡 Полезно, если:
- У вас много модулей;
- Вы используете fat JAR;
- Приложение долго стартует и важна скорость.
⚠️ Важно
- Работает только с аннотациями Spring, не с кастомными;
- Не забудьте включить annotation processing в IDE (особенно в IntelliJ:
Settings → Build, Execution, Deployment → Compiler → Annotation Processors).📊 Профит: в крупных проектах — до 30–50% ускорения старта.
👉@BookJava
