Spring Cloud Config의 기능
- 분산 시스템에서 서버와 클라이언트 구성에 필요한 설정 정보(application.yml)를 외부 시스템에서 관리
- 하나의 중앙화된 저장소에서 구성요소 관리 기능
- 각 서비스를 다시 빌드하지 않고, 바로 적용 가능
- 배포 파이프라인을 통해 dev, uat, prod 등 환경에 맞는 구성 정보 사용 가능
1. Lcal Git Repository
로컬 Repository에만 등록해 형상관리 진행(인터넷이 되지 않더라도 Git을 이용해 형상관리, 소스 관리, 히스토리 관리를 할 수 있다.)
1-1) Git 디렉토리 생성
$ mkdir git-local-repo // 디렉터리 생성
$ cd git-local-repo // 이동
$ git init // git 초기화(git으로 관리 가능하게 됨)
1-2) 설정파일 생성
$ code ecommerce.yml // 설정파일 생성 code는 VSC를 사용해서 파일을 만드는 방법이다.
$ git add ecommerce.yml // git에 등록(추적을 위한 인덱싱 작업)
$ git commit -m "설정파일 업로드"
2. Config 프로젝트 생성
- [New Project] > [Spring Initializr] > [Next]
- [Articat] 프로젝트 이름 > [Next]
- Dependencies는 Config Server만 추가
3. config-service 프로젝트 설정
3-1) EnableConfigServer 추가
Config Server 역할을 하기 위한 @EnableConfigServer 어노테이션 추가
3-2) application.yml
server:
port: 8888
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: file:///D:/Iwork/SpringBoot/Spring Cloud/ecommerce/git-local-repo
- file : 불러오고자하는 파일 경로 입력
3-3) 프로젝트(config-service) 실행 테스트
[1. Lcal Git Repository]에서 만든 yml 파일 이름과 아무것도 명시하지 않으면 default로 인식되기 때문에 defalut를 입력하여 값이 잘 들어오는지 테스트
- {URL}/{설정 파일 이름}/default
4. 다른 프로젝트에서 공통 설정 정보 사용하기
4-1) pom.xml 추가
Spring Cloud 최신버전에서는 bootstrap이 자동으로 로드되지 않기 때문에 설정 정보가 바로바로 반영이 안 되는 문제가 발생한다. 이를 해결하기 위한 방법으로 Actuator refresh, Spring Cloud Bus가 있다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
4-2) bootstrap.yml 생성
우선순위에 따라 application.yml 보다 bootstarp.yml이 먼저 실행된다. 공통 설정 파일을 읽어오는 부분을 먼저 실행 될 수 있게 bootstarp.yml를 만들어 작성한다.
- uri : config-service(공통 설정 프로젝트) 주소를 입력
- name : yml 파일명
4-3) 설정 값 불러오기
반응형
'Java' 카테고리의 다른 글
[Spring Boot] @ConfigurationProperties 프로퍼티 바인딩 방법 (0) | 2024.06.25 |
---|---|
[Spring Boot] Logback 사용한 원하는 위치게 로그 파일 생성 방법 (0) | 2024.05.17 |
[IntelliJ] GitLab 이클립스 프로젝트 IntelliJ에 import 방법 (0) | 2023.09.25 |
[Spring Boot/Spring Cloud] MSA - API Gateway를 사용한 로드밸런싱 방법 (0) | 2023.08.04 |
[Spring Boot/Spring Cloud] MSA - Netflix Eureka 서버/클라이언트 구축 (0) | 2023.07.23 |