문제 상황
Spring Boot 3.4.3에서 라이브러리를 개발하면서 META-INF/spring.factories에 EnableAutoConfiguration을 등록했지만, 자동 설정이 적용되지 않았습니다......
문서를 찾아보니 Spring Boot 2.7 Release Notes와 Spring Boot 3.0 Migration Guide에서 관련 내용을 다루고 있었습니다.
원인 분석
Spring Boot 2.7에서 변경된 Auto-configuration 등록 방식
기존에는 spring.factories에 자동 구성 클래스를 쉼표로 구분하여 등록했지만, Spring Boot 2.7부터는 새로운 방식이 추가되었습니다.
- 기존 방식: spring.factories에서 org.springframework.boot.autoconfigure.EnableAutoConfiguration 키 아래 등록하는 방식
- 새로운 방식: META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일에 한 줄씩 등록
- Spring Boot 2.7에서는 두 방식 모두 사용할 수 있었으며, 중복이 있을 경우 자동으로 정리
Spring Boot 2.7에서는 호환성을 위해 기존 방식과 신규 방식으로도 등록할 수 있었습니다.
Spring Boot 2.7 Release Notes
Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-boot
github.com
Spring Boot 3.0부터 기존 방식 제거
Spring Boot 3.0부터는 spring.factories에서 EnableAutoConfiguration 키를 이용한 등록이 삭제되었습니다.
- Spring Boot 2.7에서는 spring.factories와 AutoConfiguration.imports 두 방식이 모두 가능
- Spring Boot 3.0부터는 AutoConfiguration.imports만 지원
Spring Boot 3.0 Migration Guide
Spring Boot 3.0 Migration Guide
Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-boot
github.com
변경 사항 정리
Spring Boot 버전지원 방식
| 2.6 이하 | spring.factories 만 지원됩니다. |
| 2.7 | spring.factories + AutoConfiguration.imports (둘 다 사용 가능) |
| 3.0 이상 | AutoConfiguration.imports 만 지원됩니다. (spring.factories 삭제) |
Spring Boot 3.x에서는 기존 spring.factories 방식이 더 이상 동작하지 않습니다.
이제는 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일을 작성해 사용해야 합니다.
해결 방법
기존 방식 (Spring Boot 3.x에서 지원되지 않음)
resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gnnny.deadlock4j.spring.boot.autoconfigure.DeadlockBusterAutoConfig
새로운 방식 (Spring Boot 3.x에서 적용 가능)
resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
com.gnnny.deadlock4j.spring.boot.autoconfigure.DeadlockBusterAutoConfig
Spring Boot 3.x부터는 spring.factories에 등록하는 방식이 아예 동작하지 않습니다.
AutoConfiguration.imports 파일을 만들고, 여기에 한 줄씩 등록하면 해결됩니다.
결론
Spring Boot 3.x에서는 기존 spring.factories 방식이 더 이상 지원되지 않습니다.
3.x 이상버전에선 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일을 사용해야 합니다.
역시 안될땐 문서를 찾아보기.....ㅎㅎ
참고 문서
Spring Boot 3.0 Migration Guide
Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-boot
github.com
Spring Boot 2.7 Release Notes
Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-boot
github.com
'트러블슈팅 & 삽질기록' 카테고리의 다른 글
| 엘라스틱서치 index_closed_exception 트러블슈팅 (0) | 2026.03.29 |
|---|---|
| Apache HTTPD 버전 업그레이드 중 MPM 이슈와 해결 과정 (5) | 2025.07.20 |
| IntelliJ 특정 버전 JDK 21 사용 시 컴파일 오류 (2) | 2025.02.22 |
| [spring] gradle build fail (0) | 2023.10.18 |
| [mac] 문제가 발생했기 때문에 컴퓨터를 종료했습니다. 경고창 뜨는 경우 대처법 (2) | 2023.09.07 |