Spring Cloud Config 서버 연결

2023. 10. 25. 19:53· Spring, Spring Boot/Cloud Config - 설정 파일 관리
목차
  1. 개요
  2. 예시 서버 구현
  3. 의존성 추가 
  4. 의존성 앞에 ext, dependencyManageMent 추가
  5. bootstrap.yml 파일 설정 
  6. yml 파일 확인
  7. 마무리

 

개요

이번에는 Spring Boot 프로젝트의 설정 정보를 Spring Cloud Config 서버를 통해 외부 저장소(Github)에서 가져와보려 합니다. 

 

저번 글에서는 Spring Cloud Config 서버를 만들었으니 이번에는 예시로 서버(Product 서버)를 하나 만든 다음 Spring Cloud Config를 통해 연결해보겠습니다.

 

 

 

예시 서버 구현

 

 

의존성 추가 

의존성 추가 중 bootstrap이 있습니다.

이 의존성을 추가하면 bootstrap.yml 사용한다는 의미입니다. bootstrap.yml은 application.yml 보다 먼저 실행되어지는 파일입니다. bootstrap.yml이 먼저 실행되면 로컬값보다 Spring Cloud Config에 의한 중앙저장소(외부 저장소, Github) 값이 우선시 되므로 중앙에서 관리되는 설정값을 사용할 수 있습니다. 

// spring cloud config
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'

 

의존성 앞에 ext, dependencyManageMent 추가

Spring Cloud 라이브러리를 사용하기 위해 추가합니다. 

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

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

 

 

전체 설정 파일 

더보기
plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.15'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.dotd'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '11'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

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

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


dependencies {

	// web
	implementation 'org.springframework.boot:spring-boot-starter-web'

	// spring cloud config
	implementation 'org.springframework.cloud:spring-cloud-starter-config'
	implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'


	// jpa
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'com.mysql:mysql-connector-j'

	// redis
	implementation 'org.springframework.boot:spring-boot-starter-data-redis'

	// 직렬화, 역직렬화
	implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

	// cache
	implementation 'org.springframework.boot:spring-boot-starter-cache'

	// aop
	implementation 'org.springframework.boot:spring-boot-starter-aop'

	// kafka
	implementation 'org.springframework.kafka:spring-kafka'


	// lombok
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'

	// test
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	// JUnit 5 의존성 추가
	testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
	testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}




tasks.named('test') {
	useJUnitPlatform()
}

 

 

 

bootstrap.yml 파일 설정 

boostrap.yml은 application.yml 보다 먼저 실행됩니다. 주로 Spring Cloud 설정과 관련된 초기 설정을 담담합니다.

여기서 Spring Cloud Server와 가져올 yml 파일을 설정합니다. 

spring:
  application:
    name: product-service
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: product
  profiles:
    active: dev

cloud.config.uri : Spring Cloud Config 서버 주소를 입력

cloud.config.name : 중앙저장소에서 가져올 yml 파일 이름 입력

profiles.active : yml 파일 중 어떤 용도 인지 입력 (DEV : 개발  UAT : 테스트  PROD 배포 등...)

 

이 양식에 따라 입력하여 가져오고 싶은 yml 파일을 선택합니다.

저의 예시는 8888v포트에 있는 Spring Cloud Config 서버에 연결하여 product-dev.yml 이라는 설정 파일을 가져오는 것 입니다. 

 

 

yml 파일 확인

설정한데로 yml 파일을 가져오는지 확인해보겠습니다. 

 

yml 파일의 정보를 가져오는 메소드를 Controller에 추가합니다.

// yml 파일 확인
@GetMapping("health_check")
public ResponseEntity<?> status() {

    StringBuilder sb = new StringBuilder();
    sb.append("Product Server 설정 정보 : \n")
            .append("env 상태 : ").append(env.getProperty("status")).append("\n")
            .append("기본값 : ").append(env.getProperty("commonValue")).append("\n");


    return ResponseEntity.ok(sb.toString());
}

 

status와 commonValue 값을 확인해보려 합니다.

저는 총 3개의 yml 파일을 만들었습니다. 

 

product.yml   product-dev.yml   product-prod.yml

 

 

product.yml 

더보기
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dotd?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
    username: root
    password: 비밀번호 

  jpa:
    hibernate:
      ddl-auto: create

  cache:
    type: redis
  redis:
    host: localhost
    port: 6379
    password: 비밀번호

status: "default"
commonValue: "updateValue"

 

product-dev.yml 

더보기
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dotd?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
    username: root
    password: 비밀번호

  jpa:
    hibernate:
      ddl-auto: create

  cache:
    type: redis
  redis:
    host: localhost
    port: 6379
    password: 비밀번호

status: "dev"

 

product-prod.yml 

더보기
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dotd?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
    username: root
    password: 비밀번호

  jpa:
    hibernate:
      ddl-auto: create

  cache:
    type: redis
  redis:
    host: localhost
    port: 6379
    password: 비밀번호

status: "prod"

 

 

 

dev 상태인 것을 알 수 있습니다. 

기본값이 updateValue인 것으로 product-dev.yml 없이도 product.yml에 있으면 값을 가져온다는 것을 알 수 있습니다. 

 

 

 

 

마무리

다음에는 Spring Cloud Config를 이용해서 설정값을 바뀌었을 때, 서버를 다시 빌드하지 않아도 설정값을 반영하는 내용을 정리해 보겠습니다.

 

  1. 개요
  2. 예시 서버 구현
  3. 의존성 추가 
  4. 의존성 앞에 ext, dependencyManageMent 추가
  5. bootstrap.yml 파일 설정 
  6. yml 파일 확인
  7. 마무리
'Spring, Spring Boot/Cloud Config - 설정 파일 관리' 카테고리의 다른 글
  • Spring Cloud Config - 변경된 설정 정보 반영
  • Spring Cloud Config
너지살
너지살
너지살
너지살개발자
너지살
전체
오늘
어제
  • 분류 전체보기 (375)
    • 잡식 (2)
      • 티스토리 (2)
    • 개발 일지 (0)
      • OMS 프로젝트 (4)
      • 우테코 6기 프리코스 (1)
    • Git (2)
    • JAVA (15)
      • Java 공부 (6)
      • 자료구조 (4)
      • 도움되는 메모 (4)
    • DevOps (18)
      • AWS (6)
      • Docker (2)
      • Jenkins (1)
      • Nginx (1)
      • Kafka (6)
      • RabbitMQ (2)
    • Spring, Spring Boot (16)
      • Test Code (1)
      • AOP (2)
      • Batch (3)
      • Cache - Redis (5)
      • Cloud Config - 설정 파일 관리 (3)
      • 성능 측정 (1)
      • 예외 처리 (1)
    • BackEnd (1)
      • Spring 공부 (1)
      • Thymeleaft (0)
    • DB (17)
      • JPA (2)
      • DB 공부 (3)
      • DB 포스팅 (4)
      • DB 답장 (1)
      • MySQL (2)
      • Redis (5)
      • MongoDB (0)
    • CS (8)
      • Spring (4)
      • DataBase (3)
      • Java (1)
    • Algorithm (203)
      • 알고리즘 개념 (5)
      • 정렬 알고리즘 (11)
      • 프로그래머스 문제풀이 (18)
      • 백준 문제풀이 (165)
      • 소프티어 문제풀이 (3)
      • 알고리즘 시험 정리 (1)
    • SQL (0)
      • 문법 (1)
      • 프로그래머스 문제풀이 (52)
      • 리트코드 문제풀이 (19)
    • IT (1)
      • IT 공부 (1)
    • 정리 (10)
      • 질문 정리 (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 병렬 처리
  • Test code
  • 유니온파인드
  • 소프티어
  • Union-Find
  • 알고리즘
  • 비트마스킹
  • 분리 집합
  • 질문 정리
  • 외판원 순회 문제
  • DFS
  • Spring Batch
  • Algorithm
  • dynamiceprogramming
  • 우선수위큐
  • 그래프 이론
  • JPA
  • 크루스칼 알고리즘
  • 경로표현식
  • Spring Boot
  • 백준
  • 다이나믹프로그래밍
  • 투 포인터
  • 다이나믹 프로그래밍
  • 두 포인터
  • 그래프 탐색
  • db
  • 투포인트
  • two pointer
  • git
  • 설정
  • 부분탐색
  • Spring Boot Redis 연결
  • dynamic programing
  • Java 정리
  • 최소 스패닝 트리
  • cache
  • 깊이/너비 우선탐색
  • DP
  • 데이터베이스
  • Sorting algorithm
  • Bitmast
  • Java
  • 최소 신장 트리
  • Next permutation
  • docker
  • MST
  • redis
  • 자료구조
  • 다음 순열 찾기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
너지살
Spring Cloud Config 서버 연결
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.