0%

Spring cloud config 리프래시 하기 (Use RefreshScope)

Spring boot config 클라이언트의 갱신

최근 프로젝트에 Spring boot config를 사용하게 되었다.
그런데 Server에서 내용이 변경된 경우 Client에서 이 부분을 반영해야 하는데 세 가지 방법이 있다.

  1. Spring 서버 재시작
  2. @RereshScope를 사용하기 (With Actuator)
  3. Event Bus 활용

여기서 1번을 사용한다면…Cloud config를 사용하는 의미가 없다.
제일 우아한 방법이자 최종 방법은 3번이지만, MQ 설정 등을 해야 해서 간단하게 적용이 가능한 2번 방법에 대해 포스팅을 해보도록 하겠다.


적용 방법

적용 전 Spring Actuator가 먼저 추가되어 있어야 한다.
만약 없다면 아래의 의존성을 추가해 준다.

1
implementation 'org.springframework.boot:spring-boot-starter-actuator'

Config 영향을 받는 부분에 @RefreshScope 추가하기

Config server의 내용을 사용하는 로직 (예를 들면 @Value 등?)의 Class 상단에 @RefreshScope를 추가한다.

Config client의 설정 파일(bootstrap.yml) 추가

Client의 설정 파일에 아래의 내용을 추가해준다.
아래의 내용은 yml 기준이다.

1
2
3
4
5
6
# 리프래시를 위해 추가
management:
endpoints:
web:
exposure:
include: "refresh"

꼭 들여쓰기를 잘 확인하자.

Post Url 호출하기

해당 서버로 Http Post method 로 해당 URL을 호출한다.

여기서 service_url은 자신의 프로젝트에 맞는 url (개발용인 경우 localhost)을 적어준다.

정리

응답 body가 []로 온 경우 새로 고침이 완료되어 적용되었다는 뜻이고, 그 외는 변동된 값이 표시된다.