본문 바로가기

Spring

(183)
[Reactive Programming] Flux Spring WebFlux Series - 17 이전 장(링크) 에서는 Mono의 동작방식과 block()에 대해서 간략하게 알아보았다. 이번 장에서는 Flux 에 대해서 자세하게 알아본다. 모든 코드는 깃 허브 (링크) 의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. Flux 스프링 Reactive의 기본 인터페이스는 Mono가 아닌 Flux다. 지난 시간에는 간단하게 String 타입을 반환하는 방밥에 대해서만 알아보았다. 이번 시간에는 조금 복잡한 Object 타입을 반환하는 시간을 가져본다. @Slf4j @RestController public class FluxController { @GetMapping("/event/v1/{id}") private Mono fluxVersion1(@Pa..
[Reactive Programming] Mono Spring WebFlux Series - 16 이전 장(링크) 에서는 WebFlux에 대해서 간략하게 알아보았다. 이번 장에서는 이전 장에서 사용했던 Mono의 동작방식과 block() 에 대해서 자세하게 알아본다. 모든 코드는 깃 허브 (링크) 의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. static factory method Mono 기본 사용법 Mono의 사용법을 알아보기 위해 간단한 컨트롤러를 작성해본다. 완성되어 있는 Hello WebFlux라는 문구를 반환하기 위해 Static Factory Method인 just를 사용하였다. @RestController public class MyController { @GetMapping("/") public Mono hello() { ret..
[Reactive Programming] WebFlux Spring WebFlux Series - 15 이전 장(링크) 에서는 Completable Future에 대해서 알아보았다. 이번 장에서는 드디어 WebFlux에 대해서 알아본다. 모든 코드는 깃 허브 (링크) 의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. 개요 기존에 작성한 코드를 살펴보면 비동기로 API를 호출하는 AsyncRestTemplate이 Spring의 버전이 올라가면서 Deprecated처리 된 것을 확인할 수 있다. 기능은 정상적으로 작동하지만 스프링 5.*에서 지원하는 Reactive 스타일이 아니다. 기본적으로 ListenableFuture를 반환하며 따로 callback 메서드를 지정해주어야 하기 때문이다. 또한 AsyncRestTemplate를 대체하는 WebClient..
[Spring Cloud] Docker - 서비스 실행 이전 장(링크) 에서는 도커에 대해서 알아보았다. 이번 장에서는 우리의 마이크로서비스들을 도커 이미지로 생성하고 실행시키는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 우리는 IntelliJ 또는 Gradle 커맨드를 통해서 jar 파일을 수동으로 생성할 것이다. 생성된 jar 파일을 도커 이미지로 생성하여 Docker Container를 실행시키는 방법에 대해서 알아본다. 필자의 경우 도커 환경에서의 실행을 위해 설정과 코드를 수정하고 jar파일을 생성하는 과정은 수동으로 진행하고 컨테이너를 실행시키는 단계는 docker-compose를 통해서 진행할 예정이다. docker-compose를 설치하는 방법은 아래서 다루도록 한다. 우리의 마이크로서비스들은 개발자의 P..
[Spring Cloud] Docker - 이미지 생성 이전 장(링크) 에서는 도커란 무엇인가와 도커 설치 방법에 대해서 알아보았다. 이번 장에서는 도커 이미지를 생성하고 실행하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Docker 실행 우리의 마이크로서비스가 사용하고 있는 MariaDB를 도커 이미지로 실행하는 방법에 대해서 알아본다. 이미지 확인 hub.docker.com에 접속하여 우리가 사용하려는 이미지 파일을 확인한다. 이미지 다운로드(생략 가능) 아래의 커맨드를 입력하여 도커 이미지를 다운로드 한다. 컨테이너를 실행할 때 PC가 없다면 자동으로 다운로드 하지만 이번에는 단계를 나누어 진행한다. $ docker pull mariadb 아래의 커맨드를 입력하여 도커 이미지 목록을 확인한다. $ docker imag..
[Spring Cloud] Docker - 개요 이번 장부터는 우리가 만든 마이크로서비스들을 컨테이너화 하는 방법에 대해서 알아본다. 이번 장에서는 컨테이너화를 하기 위한 기술 중에 대표적으로 사용되는 Docker에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 가상화(Virtualization) 가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 위키백과 간략하게 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공하는 기술을 의미하며 대표적으로 플랫폼 가상화와 리소스 가상화가 있다. 하이퍼..
[Spring MVC] Thymeleaf - Radio & Select 이전 장(링크) 에서는 타임리프의 스프링 통합 기능 중 체크박스에 대해서 알아보았다. 이번 장에서는 통합 기능 중 라디오 버튼과 셀렉트 박스에 대해서 알아본다. 모든 코드는 깃 허브(링크) 에 올려두었다. Radio Button 라디오 버튼은 여러 선택지 중에서 하나를 선택할 때 사용할 수 있다. 이번에는 라디오 버튼을 자바 Enum을 사용하여 활용하는 방법에 대해서 알아본다. ItemType @Getter @RequiredArgsConstructor public enum ItemType { BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; } @ModelAttribute("itemTypes") public ItemType[] it..
[Spring MVC] Thymeleaf - 체크박스 이전 장(링크) 에서는 타임리프의 스프링 통합 기능 중 입력 폼에 대해서 알아보았다. 이번 장에서는 통합 기능 중 체크박스에 대해서 알아본다. 모든 코드는 깃 허브(링크) 에 올려두었다. Checkbox Java Files 예제를 만들기 위한 Class, Enum 파일들을 살펴본다. ItemType @Getter @RequiredArgsConstructor public enum ItemType { BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; } DeliveryCode @Data @AllArgsConstructor public class DeliveryCode { private String code; private String ..