Back-End/에러와의 전쟁

[spring 버전 호환 문제] Caused by: java.lang.IllegalArgumentException: Log types cannot be injected, please use DeferredLogFactory

얄루몬 2023. 6. 19. 14:02

[문제 상황]

Caused by: java.lang.IllegalArgumentException: Log types cannot be injected, please use DeferredLogFactory

- 인증, 인가 관련 서버 작업 중 프로그램 실행 시 해당 문구가 뜨며 서버가 시작되지 않는 문제가 발생했다.

- 이와 관련해서 서치를 진행한 결과 스프링과 해당 클라우드의 라이브러리의 버전 호환이 되지 않는 문제였다.

- 본인은 jdk 17, spring boot 3.0.2버전을 사용하고 있다. 이 문제는 spring 3버전 이상을 사용할 때 스프링 클라우드와 관련된 문제이다.

👉 https://stackoverflow.com/questions/74629444/post-spring-boot-3-update-unable-to-instantiate-factory-class-org-springframe

[해결 방법]

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 버전으로 올려주면 된다.