본문 바로가기

Spring Boot

(55)
[Spring Boot] 핸들러 인터셉터(Handler Interceptor) 핸들러 인터셉터란?핸들러 인터셉터는 Spring에서 요청 전후 처리를 담당하는 컴포넌트로, Filter와는 달리 DispatcherServlet 수준에서 작동합니다. 이 컴포넌트는 컨트롤러에 도달하기 전, 후, 그리고 뷰 렌더링 직전에 특정 로직을 수행할 수 있게 해줍니다.  핸들러 인터셉터 인터페이스 메소드 설명CustomInterceptor 클래스@Slf4j@Componentpublic class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ..
[Spring Boot] Spring MVC 아키텍처: 요청 처리 흐름과 주요 컴포넌트 Spring MVC 주요 구성 요소 설명1. 필터 (Filter)역할: 필터는 클라이언트의 요청이 서버에 도달하기 전에 전처리를 수행하는 컴포넌트입니다. 필터는 웹 애플리케이션의 여러 요청과 응답에 대한 공통 작업을 수행할 수 있습니다.용도:로그 기록: 요청의 메서드, URL, 클라이언트 IP 주소 등을 로그로 기록하여 요청 분석에 도움을 줍니다.인증 및 권한 검사: 사용자의 인증 상태를 확인하고, 인증되지 않은 사용자의 요청을 차단합니다.형 변환: 요청 데이터를 적절한 형식으로 변환하거나, 요청에 대한 추가 처리를 수행합니다. 2. 디스패처 서블릿 (DispatcherServlet)역할: 디스패처 서블릿은 Spring MVC의 중앙 관리자로서, 클라이언트의 HTTP 요청을 가로채어 적절한 핸들러로 전달..
[Spring Boot] Filter란? 필터를 활용한 요청 및 응답 로깅 Filter란?Filter는 클라이언트의 요청과 응답을 가로채는 역할을 합니다. 스프링 프레임워크에서는 필터가 DispatcherServlet 이전과 이후에 동작하며, 웹 컨텍스트 영역에서 실행됩니다. 스프링 부트에서는 기본적으로 톰캣 서버가 제공되며, 필터는 톰캣 서버와 DispatcherServlet 사이의 요청 및 응답을 제어할 수 있습니다.  Filter의 활용데이터 변환 및 조작요청 또는 응답 데이터를 변환하거나 가공합니다.요청 로깅 (Logging)클라이언트의 요청 데이터를 기록합니다.인증 및 권한 확인요청에 대한 인증과 권한을 필터 단계에서 확인합니다.필터 체인(Filter Chain) 구성여러 필터를 연속적으로 실행해 특정 작업을 처리할 수 있습니다.  예시: 학생 등록 시스템에서 발생할 ..
[Spring Boot] Pageable 사용하기 Pagination(페이지네이션)은 많은 데이터를 한 번에 로드하지 않고, 페이지 단위로 나누어 처리하는 방식입니다. 특히, 대량의 데이터를 처리할 때 성능 개선에 큰 도움을 줄 수 있습니다. 이 글에서는 Spring에서 제공하는 Pageable을 활용하여 백엔드에서 데이터를 페이지 단위로 조회하고, 이를 프런트엔드에 전달하는 방법을 설명하겠습니다.1. Pageable 개념과 사용 목적Pageable은 Spring Data JPA에서 제공하는 인터페이스로, 요청된 페이지 번호, 페이지 크기 등의 정보를 기반으로 데이터를 가져올 수 있도록 지원합니다. 데이터베이스에서 필요한 데이터만 가져와 메모리 사용을 최소화하고, 동시에 필요한 데이터만 프런트엔드에 전달하여 성능을 최적화할 수 있습니다.주요 특징:pag..
[Spring Boot] 여러가지 Annotation 상시 업데이트하는 글입니다.Spring Boot 어노테이션어노테이션설명추가 정보@SpringBootApplication스프링 부트 애플리케이션의 시작점으로, 여러 설정을 자동으로 활성화합니다.@Configuration, @EnableAutoConfiguration, @ComponentScan을 포함합니다.  Web 어노테이션어노테이션설명추가 정보@ControllerREST API를 처리하지 않고 클라이언트에게 view를 제공합니다.@RestController와 혼동하지 않도록 주의해야 합니다.@RestControllerREST Api를 처리하는 ControllerJSON 형태로 데이터를 반환합니다.@Controller와 혼동하지 않도록 주의해야합니다.@RequestMapping특정 URL을 처리하는 메소..
[Spring Boot] JPA 연관 관계 설정하기 JPA를 사용하다 보면 여러 엔티티 간의 연관 관계를 매핑해야 할 때가 많습니다. 데이터베이스의 테이블 간 관계를 어떻게 매핑하고, 이를 엔티티 간 관계로 어떻게 설정할지에 따라 코드의 복잡성이 달라집니다. 특히, 실무에서는 엔티티와 DTO(Data Transfer Object)를 분리하여 사용하는 경우가 많기 때문에, 연관 관계를 관리할 때 여러 방법을 사용하게 됩니다. 이 글에서는 OneToMany, ManyToOne과 같은 JPA 연관 관계 매핑을 설정하고, DTO를 활용하여 데이터를 변환하는 방법을 소개하겠습니다.  1. JPA 연관 관계 매핑 기본 개념OneToMany, ManyToOne의 개념OneToMany와 ManyToOne 관계는 가장 기본적인 관계 중 하나로, 두 엔티티 간의 관계를 나..
[Spring Boot] MySQL 연결하기 의존성 (Dependencies)Lombok역할: 반복적인 코드 생성을 줄여주는 라이브러리입니다. 예를 들어, getter/setter, toString, equals, hashCode 메서드 등을 자동으로 생성해줍니다.주요 기능: @Getter, @Setter, @ToString, @Builder, @AllArgsConstructor, @NoArgsConstructor 등.Spring Web역할: 스프링 기반 웹 애플리케이션 개발을 위한 의존성으로, HTTP 요청/응답 및 RESTful API 구현에 사용됩니다.주요 기능: Spring MVC, REST API 지원, 웹 애플리케이션의 엔드포인트 설정.Spring Data JPA역할: JPA(Java Persistence API)를 쉽게 사용하기 위한 ..
[Spring Boot] DTO 유효성 검사를 위한 커스텀 어노테이션 만들기 Spring에서 DTO 유효성 검사스프링에서는 DTO를 받을 때 기본적으로 제공하는 유효성 검사를 사용합니다. 그러나 기본 유효성 검사 외에 모든 유효성을 만족시키기에는 부족할 수 있습니다. 이를 해결하기 위해 필요에 따라 커스텀 어노테이션을 만들어 사용할 수 있습니다.커스텀 어노테이션의 필요성DTO 내에서의 유효성 검증: 기본적으로 제공되는 유효성 검사로는 충분하지 않을 수 있습니다. 예를 들어, 여러 필드를 동시에 검사해야 하는 경우 @AssertTrue와 같은 방법을 사용할 수 있지만, 이는 코드 가독성을 저하시킬 수 있습니다.추상화: 커스텀 어노테이션을 사용하면 유효성 검사 로직을 추상화하여 재사용성과 가독성을 높일 수 있습니다.커스텀 어노테이션을 만들기 전 알아야 할 어노테이션1. @Target..