[문제 상황]
Caused by: java.lang.IllegalArgumentException: Log types cannot be injected, please use DeferredLogFactory
- 인증, 인가 관련 서버 작업 중 프로그램 실행 시 해당 문구가 뜨며 서버가 시작되지 않는 문제가 발생했다.
- 이와 관련해서 서치를 진행한 결과 스프링과 해당 클라우드의 라이브러리의 버전 호환이 되지 않는 문제였다.
- 본인은 jdk 17, spring boot 3.0.2버전을 사용하고 있다. 이 문제는 spring 3버전 이상을 사용할 때 스프링 클라우드와 관련된 문제이다.
[해결 방법]
step 1 ) application.yml에 아래와 같이 작업
spring:
config:
import: "optional:configserver:"
또는
cloud:
config:
enabled: false
step 2 ) pom.xml에 아래와 같이 작업
2-1 ) properties 추가 - 스프링 클라우드 버전 2022.0.x버전 이상으로 설정할 것
<properties>
<java.version>17</java.version>
<spring-cloud.version>2022.0.1</spring-cloud.version>
</properties>
2-2 ) 라이브러리 사용을 위한 추가 작업
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2-3) 해당 라이브러리 관련 설정(프로퍼티에서 설정한 스프링 클라우드 버전을 여기에 명시)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 해당 클라우드 버전을 2022.0.x 버전으로 올려주면 된다.