💐 Spring

💐 Spring

[Spring MVC] Zip, UnZip 업로드 및 다운로드 API 구현 (feat. MultipartFile)

개발환경💡 전체 코드는 Github를 참조해주세요.spring boot 3.3.1JDK 17IntroSpring MVC에서는 MultipartFile 이라는 인터페이스를 통해 파일 업로드 기능을 제공하고 있습니다. ZIP, UnZIP 기능을 제공하는 유틸성 클래스를 함께 개발해보고, MultipartFile을 함께 사용하여 파일 업로드, 그리고 HttpServletResponse를 통해 파일을 클라이언트에게 스트림을 통해 내려줘서 다운로드할 수 있는 API를 개발 및 테스트 하는 방법에 대해서 배워보도록 하겠습니다.먼저 Multipartfile이 뭘까요?보통 파일을 전송할 때, HTTP body를 여러 부분(Multipart Data)으로 나눠서 보내는데 이러한 Multipart Data 즉, Mult..

💐 Spring

[Spring] - ConfigurationProperties를 통해 프로퍼티 주입하기 (feat. @Value 상위 호환)

개요application.yml에 설정한 property값들을 @Value로 가져오기보다는 해당 설정을 다루는 객체를 하나 만들어두고 가져다 쓸 수 없을까? 하는 의문에서 출발하였습니다. 찾아보니 스프링 부트에서는 @ConfigurationProperties를 통해 Property를 객체에 저장할 수 있는 방법을 제공하고 있습니다. @Value 주입 방식보다 훨씬 더 안전하고 강력한 기능을 제공합니다.1. Dependency 추가annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'2. application.ymlmy: service: enabled: false remote-addr..

💐 Spring/개념 및 이해

Spring 존재하지 않는 API 응답 커스터마이징 (feat. 내부 동작도 살펴보기)

Intro 기본적으로 Spring MVC는 존재하지 않는 API 요청 시 응답을 다음과 같이 주고 있습니다. { "timestamp":"2023-09-21T11:30:05.517+00:00", "status":404, "error":"Not Found", "path":"/api/404" } 위 응답은 Spring MVC가 기본적으로 제공해주는 오류 응답 입니다. 보통 실무에서는 프레임워크에서 기본적으로 제공해주는 응답값을 사용하기 보단 공통 응답 포맷을 맞춰서 사용할 것 입니다. 어떻게 하면 Not Found에 대한 응답을 커스텀할 수 있는지와 내부적으로 어떻게 동작하고 있는지도 함께 에러 로그와 코드를 통해 살펴보겠습니다. 에러 응답이 생성되기까지의 여정 그렇다면 어떻게 스프링MVC에서는 에러 메세지를..

💐 Spring/개념 및 이해

Spring MVC | @Valid는 어떻게 동작하는거야? (feat. DispatcherServlet)

@Valid Spring Boot에서 @Valid를 @RequestBody 객체에 붙이게 되면, 이때 스프링은 Hibernate Validator(javax.validation 패키지에 있는 JSR-303/JSR-380인 BeanValidation을 활용함)를 사용하게 됩니다. Spring MVC에서는 Validation이 어떻게 동작하는지 MVC 동작원리와 함께 살펴보겠습니다. Dispatcher Servlet 아래는 Spring MVC의 동작구조를 도식화한 것입니다. 하나하나 차근히 살펴보겠습니다. 클라이언트 요청을 제일 먼저 받는 디스패처 서블릿(프론트 컨트롤러)입니다. DispatcherServlet의 HandlerMapping 전략을 통해 클라이언트의 요청을 처리해 줄 Controller를 찾습..

💐 Spring

Spring Validation을 통해 데이터 유효성 검증하기

Validation 요청 데이터의 유효성 검증(사용자의 아이디의 길이라던지 정규표현식에 만족하는지에 대한 검증 등등)과 비즈니스 로직은 보통 Service 로직에 담겨있습니다. DB 중복 체크 등 비즈니스 로직은 서비스에 두고, 이 데이터의 유효성 검사를 스프링 부트에서 제공해주는 Validation 기능을 이용하면 손쉽게 검증할 수 있을 뿐더러 서비스에는 오직 핵심 비즈니스 로직만 둘 수 있는 장점을 가져갈 수 있을 것 같습니다. 아래 실습을 통해 자세하게 알아보겠습니다. 개발환경 SpringBoot 2.7.9 JDK 11 Gradle 의존성 추가 SpringBoot 2.3.0 이상부터는 의존성이 포함되어 있지 않기 때문에 직접 추가해줘야 합니다. implementation 'org.springfram..

💐 Spring

Springdoc을 이용한 API 문서 자동화 (Swagger, SpringBoot 3.x)

Spring Boot 3.x.x 부터는 JavaEE → Jakarta EE로 교체되었습니다. 그렇기 때문에 이전에 사용했던 Springfox는 현재 Spring Boot 3.x.x에 대한 업데이트가 이뤄지지 않고 현시점에는 사용할 수 없었습니다. Springdoc 공식문서에서 어떻게 적용할 수 있는지에 대한 자세한 방법이 나와있으니 참고하시면 좋을 것 같습니다. springdoc-openapi v2.0.2 의존성 추가 Spring Boot 3.x.x부터는 아래 의존성을 추가해주면 Swagger-ui 설정은 끝입니다. implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2" springdoc-openapi-ui → springdoc-..

iseunghan
'💐 Spring' 카테고리의 글 목록