본문 바로가기

Spring Boot

(22)
[SpringBoot] 컨트롤러를 테스트 하는 방법 - @WebMvcTest, @MockBean 컨트롤러 테스트 클래스 컨트롤러를 테스트 하기 위해서는 @WebMvcTest와 @MockBean를 사용할 수 있다. @WebMvcTest를 이용해서 컨트롤러를 띄울 수 있고, @MockBean을 통해서 가짜 빈 (이 자체로는 그냥 껍데기만 있는 빈)을 컨테이너에 등록할 수 있다. 추가로 테스트에 필요한 스프링 빈들은 (MockMvc나 ObjectMapper)은 @AutoWired로 주입받는다. 테스트 클래스안의 @Test 메소드 - given Mockito에서 제공하는 given( ) 메소드를 이용해서 mockBean을 설정해줄 수 있다. 예를들어, accountService라는 목빈을 @MockBean으로 선언한 상태에서, accountService의 acreateAccount가 리턴하는 값을 설정하고..
[SpringBoot] 2.1-3 스프링 부트 동작 방식, 레이어드 아키텍처 Summary : 효율을 위해 마이크로 아키텍처 구조를 가져야 하지만, 이를 위해선 서버간 통신이 필요 통신에서의 역할별로 계층을 나눈게 레이어드 아키텍처 🔍 목차 02 개발에 앞서 알면 좋은 기초 지식 2.1 서버 간 통신 2.2 스프링 부트의 동작 방식 2.3 레이어드 아키텍처 📌 2.1 서버 간 통신 단일 서비스 아키텍처 : 하나의 서비스 단위로 개발하는 것 장점 : 하나의 서비스에서 모든 자원을 공유하므로 원하는 자원에 쉽게 접근 가능 단점 1) 서비스의 규모가 크므로 시간이 오래 걸림 2) 한 부분이 고장 나면 전체가 다운될 수 있음 이러한 문제를 해결하기 위해 나온 것이 마이크로 서비스 아키텍처(MSA) 마이크로 서비스 아키텍처 : 서비스를 작게 나누어 개발하는 것 장점 1) 단일 모듈의 장애..
[SpringBoot] 1.2 스프링 프레임워크 vs. 스프링 부트 Summary : 스프링 부트는 스프링 프레임워크를 쉽게 쓸 수 있게 해준다. 🔍 목차 1.2 스프링 프레임워크 vs. 스프링 부트 1.2.1 의존성 관리 1.2.2 자동 설정 1.2.3 내장 WAS 1.2.4 모니터링 📌 1.2 스프링 프레임워크 vs. 스프링 부트 스프링 프레임워크는 다양한 기능을 제공하는 만큼 설정이 복잡함 이런 문제를 해결하기 위해 등장한 것이 바로 스프링 부트 스프링 부트는 스프링 프레임워크 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 사용할 수 있게 해줌 📌 1.2.1 의존성 관리 스프링 프레임워크에서는 모듈의 의존성을 직접 설정해야하고, 호환되는 버전을 맞춰야함 하지만 스프링 부트에서는 spring-boot-starter 라는 의존성이 자주 사용되는 라이브러리를 조..
[SpringBoot] 1.1 스프링 프레임워크 Summary : 스프링 프레임워크란, 개발자가 개발에만 집중할 수 있게 도와주는 자바 기반 프레임워크 🔍 목차 1.1 스프링 프레임워크 1.1.1 제어 역전(IoC) 1.1.2 의존성 주입(DI) 1.1.3 관점 지향 프로그래밍(AOP) 1.1.4 스프링 프레임워크의 다양한 모듈 💡 1.1 스프링 프레임워크 '전자정부 표준 프레임워크'의 기반 기술로 채택될 만큼 많이 사용하는 프레임워크 엔터프라이즈급 개발을 편리하게 만들어줌 (cf. 엔터프라이즈급 개발 : 기업 환경을 대상으로 하는 개발) 핵심 가치는 '어플리케이션 개발에 필요한 기반을 제공하여 개발자가 비지니스 로직 구현에만 집중할 수 있게 하는 것' 한마디로 자바로 어플리케이션을 개발하는데에 필요한 기능을 제공하는 도구 📌 1.1.1 제어 역전 (..
[Spring] 어노테이션으로 반복 코드를 줄여주는 Lombok(롬복) Lombok이란? Lombok은 여러가지 @어노테이션을 제공하고 이를 기반으로 반복 소스코드(boiler plate)를 컴파일 과정에서 생성 해주는 방식으로 동작하는 라이브러리이다. 즉, 코딩 과정에서 롭복과 관련된 어노테이션만 보이고 getter,setter 등의 생략되지만 실제로 컴파일된 결과물 .class 파일에는 코드가 생성되어 있다는 뜻이다. Lombok 어노테이션의 종류 @Getter, @Setter : Java Bean 규약에 있는 setter, getter를 생성 @ToString : Object에 기본 구현된 ToString 대신 객체의 값 보여주는 ToString을 생성 @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor..
[Spring] Handler와 Controller의 관계 Interceptor 인터셉터의 preHandle과 postHandle을 공부하다가 이런 의문이 들었다. 왜 이름이 pre'Handle'이지? Controller 전후로 있으니까 pre'Controller' 라고 해야하지 않나?🤔 이런 의문을 해소하고, 용어의 혼동을 없애기 위해 Handler와 Controller의 차이를 정리하고자 한다. Handler와 Controller의 관계 개념적으로 핸들러의 넓은 의미를 무언가를 다루는 것입니다. Spring MVC에서 컨트롤러의 경우 웹요청을 다루기 때문에 핸들러에 포함된다고 볼 수 있습니다. 그러나 모든 핸들러가 (웹 요청을 다루는) 컨트롤러인 것은 아닙니다. 예를 들어, Message를 다루는 MessageHandler가 있다면 이 핸들러는 컨트롤러가 아..