이번에는 Spring WebMVC와 WebFlux의 의존성이 모두 존재하는 경우에 어떻게 동작하는지 살펴보도록 하겠습니다. 1. WebMVC와 WebFlux 의존성이 모두 존재하는 경우의 동작 방식 [ WebMVC와 WebFlux ] 스프링에는 WebMVC와 WebFlux, 2가지의 웹 프레임워크가 있다. WebMVC: 전통적인 멀티 쓰레드 기반의 웹 프레임워크 WebFlux: 리액티브 스택 기반의 웹 프레임워크 2가지 웹 프레임워크는 다음과 같은 의존성을 추가함으로써 사용 가능하다. 2가지 의존성을 모두 추가하는 것도 가능한데, 이러한 경우에는 어떻게 동작하게 되는지 살펴보도록 하자. implementation 'org.springframework.boot:spring-boot-starter-web' ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b3zSpq/btrCXmxWOPm/fBKKC6UNM5AVa8Ql16atXK/img.png)
이번에는 Spring Cloud Cloud 설정 파일 주소를 SSL로 연결 설정 해보도록 하겠습니다. 1. Spring Cloud Config 설정 파일 내용을 갱신하는 방법 [ Spring Cloud Config 설정 파일 내용을 갱신하는 방법 ] 스프링 클라우드를 통해 깃 주소에서 관리하는 설정 파일에 변경이 필요할 수 있다. 그런데 별다른 설정 없이는 설정 파일이 변경되어도 변경사항이 설정 클라이언트(Spring Cloud Config Client)에 반영되지 않는다. 왜냐하면 설정 서버(Spring Cloud Config Server)에 부하를 줄이도록 애플리케이션을 실행 시점에 1번 설정 정보를 읽고 로컬에 캐싱해두기 때문이다. 만약 배포 후에 잘못된 값이 발견되었다면 설정 값 때문에 다시 배포..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bNsUt5/btrCUk1fK3z/8QMS6JJXxe3VSXKKoyZnck/img.png)
이번에는 Spring Cloud Config에 대해 간단히 알아보고, 설정해보도록 하겠습니다. 1. Spring Cloud Config란? [ Spring Cloud Config란? ] Spring Cloud Config는 분산 시스템에서 외부화된 설정 정보를 서버 및 클라이언트에게 제공하는 시스템이다. 설정 서버는(Config Server)는 외부에서 모든 환경에 대한 정보들을 관리해주는 중앙 서버이다. 기본적으로 설정 정보 저장을 위해 git을 사용하도록 되어있어서 손쉽게 외부 도구들로 접근 가능하고, 버전 관리도 가능하다. Spring Cloud Config Server(설정 서버): 버전 관리 레포지토리로 백업된 중앙 집중식 구성 노출을 지원한다. Spring Cloud Config Client(..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qa5kO/btrCw8mee1M/z78MDtjHWXln18ykDCYkEK/img.png)
개발을 하다 보면 추상화를 위해 하나의 인터페이스 또는 추상 클래스가 여러 구현체를 갖는 경우가 자주 있습니다. 이때 특정 타입의 구현체를 찾아주어야 하는 팩토리 클래스를 만드는 것이 불가피한데, 이 팩토리 클래스를 유연하게 만드는 방법에 대해 알아보도록 하겠습니다. 1. if-else로 팩토리 클래스 구현하기 [ if-else로 팩토리 클래스 구현하기 ] 우리가 다양한 로그인 방법을 지원하기 위해 이를 LoginService라는 하나의 인터페이스를 만들고, 웹 로그인, 모바일 로그인, SNS 로그인과 같이 3가지 구현체를 두었다고 하자. public interface LoginService { void login(); } LoginController에서는 로그인 타입을 파라미터로 받아서, 타입에 맞는 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/buj1Iw/btrAbw5LiW8/Qp6spIovVxECNDnPVeOjUK/img.png)
이번에는 @WebMvcTest가 갖는 한계와 이를 극복하기 위해 직접 개발해본 라이브러리를 소개해보고자 합니다. 매우 초기 버전인만큼 어떠한 버그와 문제가 나올지 모르지만, 써보시고 이슈 등록이나 문제점 공유 등 해주시면 감사드리겠습니다! 1. 커스텀 라이브러리 구현(feat. AutoMock) [ 요구사항 ] 앞선 포스팅에서 @WebMvcTest가 갖는 한계점들을 알아보았다. 그리고 이러한 문제를 해결하고자 직접 커스텀 라이브러리를 구현하고자 하였는데, 개인적으로 작성한 요구사항은 다음과 같다. @WebMvcTest를 사용할 것 @MockBean과 @SpyBean을 사용하지 않고 가짜 객체를 지원할 것 애플리케이션 컨텍스트를 재사용할 것 1. @WebMvcTest를 사용하여 설정을 자동화할 것 @Web..