일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비트마스킹
- 트리
- 달팽이
- 메모이제이션
- Gradle
- 구현
- 유레카
- Logback
- 플로이드 와샬
- spring cloud
- 다익스트라
- Zuul
- 도커
- 완전 탐색
- Java
- 구간 트리
- BFS
- 서비스 디스커버리
- 이분 매칭
- 백트래킹
- 이분 탐색
- Spring Cloud Config
- 게이트웨이
- 주울
- docker-compose
- 스프링 시큐리티
- dp
- 스택
- spring boot
- ZuulFilter
- Today
- Total
Hello, Freakin world!
[Spring Cloud Config] 2.서비스 연결하기 본문
버전 정보
Spring boot 2.4.2, Java 11
컨피그 서버 만들기에 이어 이번에는 컨피그 서버를 이용하는 클라이언트 서비스를 만들어보자.
클라이언트 서비스
스프링 이니셜라이저를 이용해 Spring Actuator, Web, Spring Config Client Server 의존성을 추가해 프로젝트를 생성한다.
build.gradle
plugins {
id 'org.springframework.boot' version '2.4.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'my.springboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2020.0.1")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-config'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
test {
useJUnitPlatform()
}
그 다음 구성 정보로 주입된 메세지를 보여줄 엔드 포인트를 작성한다.
HelloRestController
@RestController
public class HelloRestController {
@Autowired ServerConfig serverConfig;
@GetMapping("/hello")
public String hello() {
return serverConfig.getValue();
}
}
ServerConfig
@Component
public class ServerConfig {
@Value("${msg:default}")
private String value;
public String getValue() {
return value;
}
}
@Value 애너테이션을 이용하면 ${키} 라는 표현식을 이용해 프로퍼티 값에 접근할 수 있다. :default 는 값는 존재하지 않는 경우 default를 기본값으로 하겠다는 의미다.
애플리케이션 코드를 여기서 마무리.
클라이언트 서버가 요청할 컨피그 서버의 url을 지정해줘야 한다.
application.properties
spring.application.name=webclient
spring.profiles.active=default
spring.config.import=configserver:http://localhost:8888
//#spring.cloud.config.uri=http://localhost:8888 <== 주석 처리됨
management.endpoints.web.exposure.include=*
참고 : bootstrap.properties 파일에 프로파일 정보와 url을 지정하면 동작을 하지 않는다. application.properties 파일에 작성해줘야 된다.
management.endpoints.web.exposure.include=* 는 스프링 액추에이터에서 자동 생성해주는 관리 엔드포인트를 모두 접근 가능하도록 하겠다는 의미다.
그리고 스프링 부트 2.4부터 추가적인 config 정보를 불러오는 방식이 약간 바뀌었다. spring.config.import라는 프로퍼티를 이용해야된다. 주석 처리된 부분 스프링 클라우드 컨피그 공식 문서에 기재된 방식인데 2.4 버전에선 동작하지 않는다.
이에 대해서는 spring.io/blog/2020/08/14/config-file-processing-in-spring-boot-2-4 를 읽어보면 도움이 될 것 같다.
위의 프로파일과 url 정보는 jar 파일 java 명령어를 통해 구동시키면서 덮어쓸 수 있다는 것도 알아두자.
위 프로젝트를 IDE에서 구동시키고 로그를 살펴보자.
컨피그 서버에서 뭔가를 가져왔다는 로그가 찍혔다.
서버를 실행시키고 브라우저에서 /hello를 호출해보자.
메세지가 잘 찍힌다.
프로파일을 dev로 바꿔주면 어떨까? webclient-dev.yml 에는 msg="hello, world! dev" 값이 들어있다.
프로파일을 dev로 바꿔주고 IDE에서 다시 시작해보자.
프로파일에 따라 다른 구성 정보가 출력되고 있다.
마지막으로 액추에이터에서 제공하는 /actuator/env 엔드포인트를 이용해 환경변수들을 살펴보자.
위처럼 JSON 데이터를 정리해서 보여준다.
오!! 현재 프로파일은 dev인데 default 프로파일의 구성정보까지 모두 가져온 점이 눈에 띄인다.
'Spring Cloud > Config' 카테고리의 다른 글
[Spring Cloud Config] 대칭키로 구성 정보 암호화하기 - 2 (0) | 2021.02.17 |
---|---|
[Spring Cloud Config] 대칭키로 구성 정보 암호화하기 - 1 (0) | 2021.02.14 |
[Spring Cloud Config] 1.컨피그 서버 만들기 (0) | 2021.02.10 |