스프링부트에서 테스트를 작성하기 위한 다양한 어노테이션(@SpringBootTest, @WebMvcTest, @DataJpaTest)들을 알아보도록 하겠습니다. 실제 테스트를 작성하는 방법은 이 포스팅을 참고해주세요. 1. 스프링부트 테스트를 위한 의존성 [ 스프링부트 테스트를 위한 의존성 ] 스프링부트는 서블릿 기반의 웹 개발을 위한 spring-boot-starter-web, 유효성 검증을 위한 spring-boot-starter-validation 등 spring-boot-starter 의존성을 제공하고 있다. 테스트를 위한 spring-boot-starter-test 역시 존재하는데, 다음과 같은 라이브러리들이 포함된다. JUnit 5: 자바 애플리케이션의 단위 테스트를 위한 사실상의 표준 테스트..
이번에는 스프링이 제공하는 다양한 유틸성 클래스들에 대해서 알아보고자 합니다. 스프링은 다양한 유틸성 클래스들을 만들어 두었는데, 그 중에서도 우리가 사용할 가능성이 있는 유틸성 클래스들 몇가지에 대해 살펴보도록 하겠습니다. 1. 스프링이 제공하는 다양한 유틸성 클래스들 [ 문자열 처리를 위한 StringUtils ] 스프링은 간단한 문자열 처리를 위한 StringUtils를 제공하고 있다. 자주 사용되는 메소드들로는 다음과 같은 것들이 있으니, 필요에 따라 사용하도록 하자. hasLength: 해당 문자열이 비어있지 않은지 검사함(공백 문자열이면 true) hasText: 해당 문자열이 공백을 포함해 비어있지 않은지 검사함(공백 문자열이면 false) containsWhiteSpace: 해당 문자열이 ..
Spring 프레임워크를 이용해 공부를 하다보면 AOP를 적용해야 하는 상황이 온다. 그리고 AOP를 적용하다보면 클래스나 메소드에 있는 어노테이션 또는 메소드로 넘겨진 파라미터 값을 필요로 할 때가 있다. 이번에는 이 부분을 어떻게 해야 하는지 살펴보도록 하자. 1. AOP Aspect에서 어노테이션 정보나 메소드의 파라미터값 가져오는 방법 [ 메소드의 파라미터 값 가져오기 ] 예를 들어 다음과 같이 클래스 레벨의 어노테이션, 메소드 레벨의 어노테이션이 있는 메소드가 있다고 하자. @Service @RequiredArgsConstructor @Slf4j @ClassAop public class HelloService { @MethodAop("myValue") public String hello(Stri..
SpringBoot 애플리케이션이 실행 후에 초기화 코드를 넣어야 하는 상황이 생길 수 있습니다. 크게 3가지 방법으로 초기화 코드를 넣을 수 있는데, 이번에는 이 3가지 방법에 대해 알아보도록 하겠습니다. 아래의 내용은 토비님의 유튜브 영상을 참고해서 공부 및 정리한 내용입니다. 라이브 코딩 해주시니 직접 가서 보시는 것을 추천드립니다! 1. SpringBoot 실행 후에 초기화 코드를 넣는 3가지 방법과 이벤트 리스너 (CommandLineRunner, ApplicationRunner, EventListener) 애플리케이션이 실행된 후에 초기화 등의 이유로 1회 특정한 코드의 실행을 필요로 할 수 있다. 스프링 부트에는 이러한 문제를 해결하기 위해 다음과 같은 3가지 방식을 사용할 수 있다. [ 커..
Spring 애플리케이션을 실행하고 요청을 보내면 유독 첫 요청이 오래 걸립니다. 이것은 우연이 아니고 디스패처 서블릿의 구조와 관련이 있습니다. 이번에는 왜 스프링에서는 첫 요청이 처리되는데 오래 걸리는지 그리고 어떻게 해결할 수 있는지 살펴보도록 하겠습니다. 1. 스프링의 서블릿 초기화 작업들 [ 디스패처 서블릿과 서블릿의 생명 주기 ] 스프링에는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임하는 디스패처 서블릿이 있다. 디스패처 서블릿은 J2EE 스펙의 HttpServlet 클래스를 확장한 서블릿 기반의 기술인데, 첫 요청이 오래 걸리는 이유는 서블릿의 생명주기와 연관이 있다. 서블릿의 생명 주기는 3가지 단계로 나뉘어지는데, 그림으로 보면 다음과 같다. 초기화: 요청이 들어오면 서블릿이 웹 ..