Spring 12

Spring Boot에 Swagger 적용하기(Spring-Doc)

2024.04.07 - [Project/협업 툴] - 개발자 API 협업 툴 - Swagger 개발자 API 협업 툴 - Swagger 요즘은 프론트엔드와 백엔드가 따로 독립적으로 분리가 된 상태에서 개발을 하는 경우가 많다. 따로 개발을 하고, API 엔드 포인트를 통해서 프론트 엔드와 서버가 통신을 하는 것이다. 위와 같 junhyuk-develop.tistory.com 우선, 글쓴이는 Spring Boot 3.2.2 , Swagger 2.0.4 를 사용한다. 아래와 같이 build.gradle 에 의존성을 추가해준다. Build.gradle //swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' 본인에게 맞..

Project/협업 툴 2024.04.07

프로젝트에 Lombok 설정하기 (어노테이션 적용이 안될 때)

우선, Spring Initializr 를 사용하지 않는 경우에 롬복을 프로젝트에 적용하기 위해선, 아래의 과정을 따르면 된다. Preferences → plugin → lombok 검색 → 실행 (재시작) 이 과정을 통해, lombok이 우선 다운로드가 된다. 만일, Spring Initializer를 사용한 이용자라면, 이처럼, ADD DEPENDENCIES 를 눌러서 lombok을 찾아서 넣어주면 자동으로 다운로드가 되면서 프로젝트가 생성된다. 이후, 롬복을 프로젝트에 적용하기 위해선, 별도의 설정이 하나 필요하다. Preferences → Annotation Processors 검색 → Enable annotation processing 체크 이처럼, Settings 에 들어가서, annotati..

IDE 2024.04.02

Spring, Servlet - 파일 업로드(비디오, 사진 데이터 등)

파일 업로드 일반적으로 사용하는 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다. HTML 폼 전송 방식 application/x-www-form-urlencoded multipart/form-data application/x-www-form-urlencoded 방식 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법 Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 다음 내용을 추가한다. Content-Type: application/x-www-form-urlencoded 그리고 폼에 입력한 전송할 항목을 HTTP Bod..

Spring 2024.01.08

Spring - Formatter, ConversionService

2024.01.02 - [Spring] - Spring - 타입 컨버터 (Converter, ConversionService) Spring - 타입 컨버터 (Converter, ConversionService) 스프링 타입 컨버터 소개 문자↔숫자 변환과 같이 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. 간단한 예시를 보자. @GetMapping("/hello-v1") public String helloV1(HttpServletReq junhyuk-develop.tistory.com 앞선 글에 이어서 작성하는 점 참고 바람 Formatter Converter 는 입력과 출력 타입에 제한이 없는, 범용 타입 변환 기능을 제공한다. 그러나 웹 애플리케이션 환경을 생각해보면, 문자를 ..

Spring 2024.01.02

Spring - 타입 컨버터 (Converter, ConversionService)

스프링 타입 컨버터 소개 문자↔숫자 변환과 같이 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. 간단한 예시를 보자. @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request) { String data = request.getParameter("data"); //문자 타입 조회 Integer intValue = Integer.valueOf(data); //숫자 타입으로 변경 System.out.println("intValue = " + intValue); return "ok"; } 파라미터로 data=10 을 보냈을 때, request.getparameter는 전부 String 타입이므로, intValue와..

Spring 2024.01.02

Spring - API 예외 처리 (ExceptionHandler, ControllerAdvice)

2024.01.01 - [Spring] - Spring - API 예외 처리 (HandlerExceptionResolver, ExceptionResolver ) 이론 Spring - API 예외 처리 (HandlerExceptionResolver, ExceptionResolver ) 이론 API 예외 처리는 어떻게 해야할까? HTML 페이지의 경우 앞선 게시글에서 설명했듯이, 오류 페이지를 만들고 이를 사용자에게 보여주기만 하면 되었다. 2023.12.29 - [Spring] - Spring(스프링) - 서블릿 예 junhyuk-develop.tistory.com @ExceptionHandler 와 @ControllerAdvice 의 장점을 명확히 알기 위해선, 이를 사용하지 않았을 때 얼마나 불편한지 ..

Spring 2024.01.01

Spring(스프링) - 서블릿 예외 처리 및 오류 페이지(필터, 인터셉터)

Servlet 예외 처리 스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지 알아보자. 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다. 애플리케이션에서 예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다. 그런데 만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로까지 예외가 전달되면 어떻게 동작할까? WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생) 결국 톰캣 같은 WAS 까지 예외가 전달된다. W..

Spring 2023.12.29

Spring 검증 - Bean Validation

Bean Validation Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 검증 애노테이션과 여러 인터페이스의 모음이다. 마치 JPA가 표준 기술이고 그 구현체로 하이버네이트가 있는 것과 같다. Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. (ORM과 관련X) 검증 애노테이션 모음 https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec Index of /hibernate/validator/6.2/reference/en-US ..

Spring 2023.12.21

Spring 검증 - Validator

2023.12.18 - [Spring] - Spring 검증 - BindingResult (FieldError, ObjectError, rejectValue, reject) Spring 검증 - BindingResult (FieldError, ObjectError, rejectValue, reject) 검증 ( Client, Server 검증 ) 클라이언트 검증은 조작할 수 있으므로 보안에 취약 서버만으로 검증하면, 즉각적인 고객 사용성이 부족 둘을 섞어 사용하되, 최종적으로 서버 검증은 필수 API 방식 → junhyuk-develop.tistory.com 해당 글은 위의 게시글에 이어 작성함을 참고하고 읽어주길 바람 Validator public interface Validator { boolean ..

Spring 2023.12.19

스프링 메세지 소스 및 국제화(MessageSource, Locale)

Message 기획자가 화면에 보이는 문구를 변경해달라는 상황이다, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 그러면 많은 화면에 해당하는 수십개의 파일을 수정해야 한다... 이를 유연하게 대처할 수 있는 방법은 뭐가 있을까? messages.properties 메세지 관리용 파일을 만드는 것이다! item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 이런식으로 한 곳에 작성해두고, 필요시에 각 HTML 태그에서 해당 데이터를 Key 값으로 불러 사용하는 것이다. 그럼 해당 데이터를 어떻게 불러 사용할까? 위의 예시와 같이 th:text = "#{...}" 형식을 맞춰 사용해줘야 한다. 위와 같이 작성하..

Spring 2023.12.14
1 2