spring-cloud-starter-gateway

XingXi·2024년 1월 31일
0

기록

목록 보기
10/33

오늘 SpringBoot 에서 Spring Cloud GateWay 를 적용 시키며
겪은 에러를 처리하는 과정을 담았다.

1. gateway setting 에러

문제 발생

java.lang.IllegalAccessError-->class org.springframework.cloud.gateway.server.mvc.config.

Caused by: org.springframework.cglib.core.CodeGenerationException: 
java.lang.IllegalAccessError-->class
org.springframework.cloud.gateway.server.mvc.config.
GatewayMvcPropertiesBeanDefinitionRegistrar$RouterFunctionHolder
$$SpringCGLIB$$0cannot access its superclass org.springframework.cloud.gateway
.server.mvc.config.GatewayMvcPropertiesBeanDefinitionRegistrar$
RouterFunctionHolder (org.springframework.cloud.gateway.server.mvc.config.
GatewayMvcPropertiesBeanDefinitionRegistrar$RouterFunctionHol
der$$SpringCGLIB$$0 is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.Restart
ClassLoader @26fb3fcf; org.springframework.cloud.gateway.server.mvc.config.GatewayMv
cPropertiesBeanDefinitionRegistrar$RouterFunctionHolder is in 
unnamed module of loader 'app')

gate way 설정이 때문에 발생하여 application.yml 설정 문제로 생각 되어 yml 파일을 수정

before

server:
  port:8000

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8761/eureka


spring:
  applilcation:
    name: api-gateway
  cloud:
      - id: first-service
        uri: http://localhost:8001/
        predicates:
          - Path=/first-service/**

      # - id: second-service
      #   uri: http://localhost:8002/
      #   predicates:
      #     - Path=/second-service/**

after

server:
  port: 8000

# eureka:
#   client:
#     register-with-eureka: false
#     fetch-registry: false
#     service-url:
#       defaultZone: http://localhost:8761/eureka


# spring:
#   applilcation:
#     name: api-gateway
#   cloud:
#     gateway:
#       routes:
#         - id: first-service
#           uri: http://localhost:8001/
#           predicates:
#             - Path=/first-service/**

      # - id: second-service
      #   uri: http://localhost:8002/
      #   predicates:
      #     - Path=/second-service/**

port: 다음에 바로 붙어서 작성이 되어 있었고, gateway 가 빠져 있었다. 그럼에도 동일한 에러가 발생하여 yml 에서 port 를 설정을 제외한 나머지를 주석 처리 하였다. 하지만 그럼에도 에러가 발생하였다.

문제 해결

원인은 정말 어이가 없었다. Gateway dependency 가 추가 되지 않았던 것이다.

before

ext {
	set('springCloudVersion', "2023.0.0")
}

dependencies {
	implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement {
	imports {
		mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
	}
}

after

ext {
	set('springCloudVersion', "2023.0.0")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement {
	imports {
		mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
	}
}

어이 없게도 gateway 대신 gateway-mvc 가 추가되어서 발생한 예외 였다.

2개의 댓글

comment-user-thumbnail
2024년 7월 14일

허허... 저도 이 문제로 2일을 시간을 보냈는데 덕분에 해결했습니다. 감사합니다.

1개의 답글