Spring

[Spring] Spring 3.0.0 AutoConfigure 사용

오잎 클로버 2023. 3. 13. 19:42
728x90

문제 발단

스프링을 활용한 오픈 소스 라이브러리 "ReflectiveCipher"를 개발 중 자동 빈 생성과 application.yml 자동 완성을 지원하기 위해 AutoConfigure를 설정 중 문제가 발생했다.

위와 같은 프로젝트 구조로 이루어져 있는 데, auto-configure 모듈이 Spring 라이브러리를 사용하여 자동 빈 생성을 해준다.

스프링에서 편하게 제공해준다고 하여, baeldung과 여러 블로그 글들을 참고하여 resources/META-INF 디렉토리를 생성.

그리고 그 안에 spring.factories를 추가하면 손쉽게 AutoConfigure가 된다고 하여 적용을 해보았지만, example 모듈(스프링 환경)에서 특정 빈을 조회하도록 하였지만, 해당 빈이 존재하지 않는다는 예외가 발생하였다.

그렇기에 의심의 여지 없이 다음과 같은 AutoConfiguration 클래스를 잘못 설정하였다고 생각하여 빈 들을 뜯어고쳐가기 시작했다.

하지만 빈들은 문제가 발생하지 않았다. 그도 그럴 것이 해당 클래스가 있는 auto-configure 모듈에서 테스트를 진행했을 때에는 잘 작동하였기 때문이다.

 

그래서 spring.factories 가 잘못된 것 같아, 다시 설정하였지만 여전히 문제는 그대로였다.

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  org.swcns.relfectivecipher.autoconfigure.configuration.ReflectiveCipherAutoConfiguration

 

문제 해결

결국 스프링 공식 이슈로 찾아가서 해결방안을 찾기로 했다. 사실 처음부터 이렇게 했으면 고생을 하지 않았을 것이다..

위 이슈 링크를 읽어보면, spring.factories는 더 이상 지원하지 않는다고 한다. 대신 springboot 2.7.0부터 지원하는 방식인 resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports를 사용하면 문제가 해결된다고 한다. 

결과는 너무나도 잘된다..

내가 못 찾은 것인 수도 있지만, 읽어봤던 모든 블로그 글들이 전부 spring.factories를 사용하면 된다고 하여 철석같이 믿었지만, 아니었다. 다행히 공식 이슈를 통해 문제를 간신히 해결하였다!

 

 

이상입니다.

'Spring' 카테고리의 다른 글

스프링 4 경험하기  (0) 2022.04.30
[Spring] JPA 공부 #1  (1) 2022.03.25
[Spring] AOP 예제  (0) 2022.03.14
[Spring] DTO vs VO  (0) 2022.02.28
[Spring] Spring Transaction 세부 설정 설명  (0) 2022.02.21