티스토리 뷰
이전에 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" 설정은 없어도 된다.
'Java > spring' 카테고리의 다른 글
TransactionTemplate 을 이용한 트랜잭션 제어 (0) | 2022.03.06 |
---|---|
spring boot aop 에서 JDK dynamic proxy 이용하는 법 (1) | 2021.05.04 |
spring boot 2.4 application.yaml 구동방식 변경 (1) | 2021.02.24 |
상속관계에서 Spring Transactional 애노테이션 동작 (0) | 2020.07.29 |
spring bean lite mode (0) | 2019.08.03 |
- Total
- Today
- Yesterday
- DesignPattern
- Design Pattern
- mariadb
- go-core
- generics
- Kotlin
- EffectiveJava
- OOP
- spring cloud
- JavaScript Core
- servlet
- JPA
- http
- clean code
- Spring
- programming
- TEST
- frontcode
- javascript
- db
- MySQL
- 정규표현식
- Git
- java
- Jackson
- backend개발환경
- toby
- code
- java8
- frontend개발환경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |