티스토리 뷰

이전에 spring cloud config server/client 를 설정하는 포스팅을 올렸었다. ( multifrontgarden.tistory.com/236 multifrontgarden.tistory.com/237 ) server 를 설정하는 부분은 달라진게 없는데 spring boot 2.4 로 올라오면서 client 설정 부분이 좀 달라졌다. 이를 알아보자.

 

1. spring boot 2.4 방식 사용

먼저 2.4 이전에는 client 에 bootstrap.yml(또는 properties) 파일이 필요했다. 그래서 서버 정보를 입력해두면 라이프사이클 상 application.yml 보다 bootstrap.yml 을 먼저 읽어 config server 에 정의돼있는 프로퍼티들을 읽어보게끔 했었다. 2.4 에선 더 이상 bootstrap.yml 이 필요하지 않다.

 

application.yml 에 아래 속성이 필요하다.

spring:
  config:
    import: "optional:configserver:http://localhost:8888"

configserver: 다음에 문자열 형태로 config server 의 url 를 적어주면 된다. 참고로 url 없이 "optional:configserver:" 라고만 적으면 localhost:8888 이 default 로 지정되게 된다.

 

그리고 앞에 붙은 "optional:" 로 제거할 수 있는데 이걸 제거하면 config server 에 붙지 못했을때 client 가 뜨지 않는다. 즉 optional 이 붙어있으면 config server 에서 응답을 받지 못해도 client 애플리케이션은 구동된다. 물론 config server 로 부터 정보를 얻어오지 못해 스프링 컨테이너가 뜨지못하는 상황은 발생할 수 있으나, 그런 상황이 없으면 config server 가 응답을 주지않는다는 이유로 애플리케이션이 구동되지않는 상황은 발생하지 않는다.

 

참고로 config server 설정은 application.yml 에 "spring.cloud.config.uri" 속성을 통해서도 할 수 있는데, config server 를 찾는 우선순위는 아래와 같다

2. legacy 방식 이용

보통 config client 애플리케이션은 기존에 구동되던 애플리케이션들일 것이다. 때문에 꼭 spring cloud config 때문이 아니라도 다양한 이유로 인해 2.4 에서 변경된 application.yml 을 사용하지 못 할 수 있다. 이전 포스팅( multifrontgarden.tistory.com/277 )에서 다룬대로

spring.config.use-legacy-processing=true

속성을 넣어주면 2.4 이상에서도 이전 방식의 구동을 보장해준다.

 

다만 저 설정만으로 config client 의 동작을 이전처럼(bootstrap.yml 을 읽도록) 보장하지는 못 한다. 부가적인 작업들을 해줘야한다.

두 가지 방법 중 하나를 해야하는데 첫번째는 아래 속성을 넣어주는 것이다.

spring.cloud.bootstrap.enabled=true

설정을 넣어주는것 자체는 어렵지않지만 해당 설정은 application.yml 에 넣으면 작동하지않고, 시스템 프로퍼티나 환경변수에 설정을 해줘야한다. 시스템 프로퍼티로 주입하는 예는 아래와 같다.

java -jar -Dspring.cloud.bootstrap.enabled=true config-client-0.0.1-SNAPSHOT.jar 

두번째 방식은 bootstrap 을 읽는 starter 모듈에 대한 의존성을 추가하는 것이다.

implementation("org.springframework.cloud:spring-cloud-starter-bootstrap")

 

application.yml 에 legacy 사용을 true 로 한 후 둘 중 한가지 방식을 적용하면 이전과 같이 bootstrap.yml 을 통해 config client 설정을 진행하며, 위에서 얘기한 "spring.config.import" 설정은 없어도 된다. 

댓글
댓글쓰기 폼