본문 바로가기

Develop/Spring9

[Spring Web MVC] Exceptions - @ControllerAdvice @ControllerAdvice 예시 코드 @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(CustomException.class) public ResponseEntity handleCustomException(CustomException ex) { return ResponseEntity.status(HttpStatus.BAD_REQUEST). 정상 코드와 예외 처리 코드 분리 가능 @ExceptionHandler만 사용 시, 정상 코드와 예외 처리 코드가 하나의 컨트롤러 위치 @Component로 메타 어노테이션이 지정되어 있으므로 component Scanning을 통해 Spring 빈으로 등록 가능 대상으로 지정한 .. 2023. 4. 17.
[Spring Web MVC] Exceptions - @ExceptionHandler @ExceptionHandler @Controller public class MyController { @GetMapping("/example") public String exampleMethod() { // 여기에 코드 작성 throw new CustomException("사용자 정의 예외입니다"); } @ExceptionHandler(CustomException.class) public ResponseEntity handleCustomException(CustomException ex) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage()); } } ExceptionHandlerExceptionResolver 스프링 기.. 2023. 4. 17.
[Spring Web MVC] Handler Methods - Return Values Return Values String 뷰 이름을 나타내는 문자열을 반환하면, 스프링 웹 MVC는 뷰 리졸버(ViewResolver)를 사용하여 해당 뷰를 찾아 렌더링한 후 클라이언트에게 전달한다. 뷰 템플릿 기본 경로 src/main/resources/templates @ResponseBody 메서드에 사용되며, 반환 값이 HttpMessageConverter를 통해 response body으로 직렬화된다. 클래스 수준에서도 지원되며, 이 경우 모든 컨트롤러 메서드에 상속된다. 비동기 요청과 반응형 타입과 함께 @ResponseBody사용 가능 @ResponseStatus(HttpStatus.OK) 애노테이션을 통해 응답 코드 설정 가능 MVC Config의 메시지 변환기(Message Converter.. 2023. 4. 17.
[Spring Web MVC] Handler Methods - MethodArgument @RequestParam Servlet 요청 파라미터(query parameter 또는 form data)를 메소드의 파라미터에 바인딩할 때 사용되는 어노테이션 (주로 단일 요청 파라미터) 동작 원리 @RequestParam("petId") int id → request.getParameter("username") 쿼리 파라미터 이름이 변수 이름과 같으면 @RequestParam(name="xx") 생략 가능 String , int , Integer 등의 단순 타입이면 @RequestParam 도 생략 가능 String이 아닌 경우 자동으로 타입 변환(Type Conversion) 적용 파라미터 타입을 배열이나 리스트로 선언 가능 required 옵션 파라미터 필수 여부를 결정한다. (기본값 = true.. 2023. 4. 17.
[Spring Web MVC] Request Mapping - consumes, produces Media Types 일반적으로 사용되는 미디어 유형에 대한 상수 제공 APPLICATION_JSON_VALUE APPLICATION_XML_VALUE 문자 집합 지정 가능 부정 표현식 지원 ex) !text/plain은 텍스트/일반 이외의 모든 Content-Type 의미 Producible Media Types // produces 속성을 이용한 방법 @GetMapping(path = "/pets/{petId}", produces = "application/json") @ResponseBody public Pet getPet(@PathVariable String petId) { // ... } Accept request header와 컨트롤러 메서드가 생성하는 Content-Type 목록을 기반으로 .. 2023. 4. 17.
[Spring Web MVC] Request Mapping - Parameters, headers Parameters, headers 요청 매개변수 조건에 따라 요청 매핑의 범위를 좁힐 수 있다. 요청 매개변수(myParam)가 있는지, 없는지(!myParam) 또는 특정 값(myParam=myValue)이 있는지 테스트할 수 있다. // 매개변수 - 특정 값 존재 여부 테스트 @GetMapping(path = "/pets/{petId}", params = "myParam=myValue") public void findPet(@PathVariable String petId) { // ... } 요청 헤더 조건에 따라서도 요청 매핑의 범위를 좁힐 수 있다. // 헤더 - 특정 값 존재 여부 테스트 @GetMapping(path = "/pets/{petId}", headers = "myHeader=myV.. 2023. 4. 17.
[Spring Web MVC] Request Mapping - URI patterns URI patterns @RequestMapping 메서드는 URL 패턴을 사용하여 웹 요청을 컨트롤러 메서드에 매핑 가능하다. PathPattern URL 경로와 미리 분석된 PathContainer에 대해 미리 파싱된 패턴을 매칭한다. 웹 사용에 최적화되어 인코딩 및 경로 매개변수 처리에 더 효과적이고 효율적이다. Spring WebFlux에서 사용되는 유일한 방식이다. 버전 5.3부터 Spring MVC에 적용되었으며, 버전 6.0부터 기본 설정으로 활성화되었다. AntPathMatcher 문자열 패턴을 문자열 경로와 매칭한다. 스프링 구성에서 클래스 경로, 파일 시스템 및 기타 위치에 있는 리소스를 선택하는 데 사용된다. 문자열 경로 입력은 인코딩 및 URL 관련 문제를 처리하는 데 덜 효과적이며.. 2023. 4. 17.
[Spring Web MVC] Request Mapping 특징 Spring MVC에서 HTTP 요청을 처리하는 메서드 혹은 클래스에 적용 클래스에 적용할 경우, 해당 클래스의 모든 메서드에 공통 URL 접두사 적용 다양한 속성(URL, HTTP 메서드, 요청 매개변수, 헤더, 미디어 타입)을 통해 요청과 이를 처리할 메서드를 매핑한다. 속성 RequestMapping의 Composed Annotations Spring MVC에서 HTTP 요청을 처리하는 메서드 혹은 클래스에 적용 2023. 4. 17.
[Spring Web MVC] @Controller vs @RestController @Controller 특징 클래스 수준 어노테이션 일반적으로 Spring Web MVC 애플리케이션에서 HTTP 요청을 처리하는 클래스에 사용 @Component을 확장한 어노테이션 컴포넌트 스캔이 활성화되면 이를 감지하여 빈으로 자동 등록 Request Mapping 정의 @RequestMapping, @GetMapping, @PostMapping 및 기타 HTTP 관련 어노테이션으로 정의된 메서드를 통해 사용 장점 컨트롤러는 Spring이 컨트롤러 빈의 수명 주기를 자동으로 관리할 수 있도록 하여 개발 프로세스를 간소화합니다. 컨트롤러 레이어와 다른 애플리케이션 레이어 간의 문제를 명확하게 분리하여 모듈화되고 유지 관리 가능한 코드를 촉진합니다. 데이터 바인딩, 유효성 검사 및 예외 처리와 같은 다른.. 2023. 4. 17.