본문 바로가기

spring

(29)
2장 스프링 부트 공통 작업 - 실전 스프링 부트 1. 어플리케이션 설정 관리 스프링 부트는 프로퍼티 파일, YAML 파일, 환경 변수, 명령행 인자 등 여려 가지 방법으로 설정 정보를 외부화해서 소스 코드 변경 없이 환경마다 다르게 적용할 수 있다. 1.1 SpringApplication 클래스 사용 @SpringBootApplication public class SpringBootAppDemoApplication { public static void main(String[] args) { var properties = new Properties(); // 해당 설정은 spring.config.import에 명시한 파일이 존재하지 않는 경우 전략을 소개 설정한 것이다. properties.setProperty("spring.config.on-not-f..
1장 스프링 부트 시작하기 - 실전 스프링 부트 1.1 스프링 부트 소개 1.1.1 왜 스프링 부트 인가? 개발자가 애플리케이션을 신속히 만들어서 구동 가능하게 해주고 복잡한 설정 지옥에서 해방시켜 줌 1.1.2 스프링 부트는 무엇인가? 스프링 프레임워크와 개발자 사이에 존재하는 계층으로서 설정을 단순화해 주는 역할을 하는 것 1.1.3 스프링 부트 핵심 기능 빠른 시동 개발자가 애플리케이션에 필요한 의존 관계를 명시하기만 하면 실행가능 자동 구성 클래스패스에 있는 JAR 파일이나 여러 가지 설정 파일에 지정된 프로퍼티 정보를 바탕으로 스프링 애플리케이션에 필요한 최소한의 컴포넌트를 알아서 자동 구성 미리 정의된 방식 미리 정의된 의존 관계를 통해서 개발자가 의존성 관리에서 자유로워지고 빠른 개발이 가능 독립 실행형 JAR 파일로 패키징 되어 외부 W..
RestTemplate을 통해서 API 호출하기 RestTemplate 이란? spring framework 에서 제공하는 고수준 HTTP API 라이브러리이다. RestTemplate을 사용하여 GET 요청하기 RestTemplate template = new RestTemplate(); ResponseEntity response = template.getForEntity("http://test.com", String.class); String body = response.getBody(); RestTemplate을 사용하여 POST 요청하기 exchange 사용하기 RestTemplate template = new RestTemplate(); RequestEntity requestEntity = RequestEntity.post("https://t..
[spring cloud]#4 spring cloud gateway 구축하기 Spring cloud gateway 매커니즘 spring cloud gateway는 세가지 요소로 구성되어 있다. 1. Route : 어떤 요청에 대해서 어떻게 처리할지에 대한 설정을 구성하는 하나의 기초적인 단위 2. Predicate : 어떤 요청을 처리할 지를 결정하는 요소 3. Filter : 요청을 어떻게 처리할 지 그리고 그 응답에 대해서 어떤 사후 처리를 할지를 결정하는 요소 Gateway Handler Mapping 에서 어떤 Route에 매칭을 해하는지 결정하여 Route에 명시된 설정에 따른 Handler를 통해서 요청을 처리하게 되는 매커니즘으로 구성되어 있다. predicate : 어떤 요청을 처리할까? Spring cloud gateway에서는 다음과 같이 구현된 Predicat..
[spring cloud]#3 Netflix Eureka 로 디스커버리 서비스 구축하기 마이크로 서비스 아키텍처를 사용한다면 많은 인스턴스로 구성된 여러 개의. 애플리케이션이 구동이 되어 서로 상호작용해야 한다. 많으면 수백 개 이상의 인스턴스가 존재하는데 이 많은 인스턴스를 ip로 식별하여 서비스를 구축하는 것은 너무 복잡한 방법이기 때문에 원하는 서비스를 구동하는 인스턴스를 찾아줄 서비스가 필요하게 된다. 이 서비스가 디스커버리 서비스이고 spring에서는 netfilx Eureka를 제공하고 있다. 구현 절차 1. Netflix eureka application 구성하기 2. 등록할 서비스 설정 구성 1. Netflix eureka application 구성하기 1-1 netflix eureka 의존성 추가 implementation 'org.springframework.cloud:s..
[spring cloud]#2 spring cloud bus 를 이용하여 설정 정보 동적으로 변경하기 각 어플리케이션의 설정 정보를 외부의 서비스를 이용하여 설정하는 방법을 적용하는 configuration service 구현 방법에 이어서 동적으로 실행 중인 어플리케이션의 동작을 멈추지 않고 설정 정보를 변경하는 방법을 알아보자 사전 준비 1. 외부 설정 서비스 [spring cloud]#1 spring cloud config server에서 application 설정 정보 조회하기 spring cloud config server 이점 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리하기 위해서 사용하는 기술 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 note-ydg.tistory.com 절차 1. 메시지 브로커 설치 (rabbitmq or kafka) 2. b..
[spring cloud]#1 spring cloud config server에서 application 설정 정보 조회하기 spring cloud config server 이점 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리하기 위해서 사용하는 기술 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고 설정 정보를 동적으로 변경이 가능 구현 절차 1. config server 만들기 plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositorie..
[WebFlux] Spring WebFlux 란 무엇인가? 자바스크립트에서 fetch API, Axios API 를 사용해서 서버에서 데이터를 요청하는 작업을 해본적이 있는가? 이것을 통해서 마치 앱과 같이 동작하는 웹사이트(SPA)를 만들 수 있다. 필요한 데이터를 알맞은 포맷을 형태로 전달 받아 네트워크의 비용을 줄이고 반응 속도를 향상시키는 형태로 서비스가 되는 여러 웹사이트들이 존재한다. 처음 이 방식을 알게 되었을 때는 당연하게 생각했다. 당연히 필요한 부분만 골라서 서버에 데이터를 요청하는 것이 효율적이지 않은가? 비동기로 작동한다는 말도 당연히 비동기로 처리되어야 하는 것이 아닌가? 하는 생각을 했다. 하지만 서버를 개발할 때 비동기 처리를 한다는 것을 들었을 때는 비동기로 어떻게 처리되어야하는 것인지 왜 그것이 좋은지에 대해서 명확한 개념이 생각나..