목록Programing/Spring (73)
T_era
본 내용은 HTTP Message Body에 직접적으로 데이터가 전달되는 경우, 즉 Request Body의 데이터를 바인딩하는 방식에 대한 설명이다. 이는 REST API에서 주로 사용되며, HTTP Method POST, PUT, PATCH 등에서 주로 활용된다.GET 메서드에서도 Request Body가 존재할 수 있으나 권장되지는 않는다. 데이터 형식으로는 JSON, XML, TEXT 등이 사용된다.@RequestParam 및 @ModelAttribute는 GET + Query Parameter와 POST HTML Form Data 바인딩 방식이다.HTTP Request Body에 데이터가 전송되는 경우, HttpMessageConverter를 통해 데이터가 바인딩된다. 현대적인 RESTful A..
@RequestParam은 URL을 통해 전달되는 파라미터 값을 Controller 메서드의 파라미터에 바인딩하는 Spring MVC 어노테이션이다. HTTP GET 메서드 요청 시 URL 뒤 ?와 함께 이름-값 쌍으로 전달되는 파라미터 접근에 주로 활용된다. URL ? 뒤 부분은 Query String, Query Parameter, Request Param으로 지칭된다.예시 1:@Slf4j@Controllerpublic class RequestParamControllerV2 { @ResponseBody @GetMapping("/v1/request-param") public String requestParamV1( @RequestParam("name")..
1. Query Parameter (Query String)HTTP Method: GET전달 방식: URL의 ? 뒤에 key=value 형태로 데이터를 연결하며, 복수의 파라미터는 &로 구분한다.예시: http://localhost:8080/request-params?key1=value1&key2=value2HttpServletRequest 사용: request.getParameter("key") 메서드를 통해 각 파라미터 값을 획득한다.@Slf4j@Controllerpublic class RequestParamController { @GetMapping("/request-params") public void params(HttpServletRequest request, HttpServletR..
Map과 유사하게 Key, Value 형식으로 구현되어 있지만 하나의 Key가 여러 Value를 가질 수 있다 HTTP Header, Reqeust Parameter와 같이 하나의 Key에 여러 값을 받을 때 사용한다.ex) key1=value1&key1=value2예시MultiValueMap linkedMultiValuemap = new LinkedMultiValueMap();// key1에 value1 저장linkedMultiValuemap.add("key1", "value1");// key1에 value2 저장linkedMultiValuemap.add("key1", "value2");// key1에 저장된 모든 value getList values = linkedMultiValuemap.get("k..
headers, consumes, produces 속성은 Spring MVC에서 HTTP 요청을 특정 핸들러 메서드에 매핑하거나, 해당 메서드의 응답 방식을 설정하는 데 사용되지만, 대상으로 하는 HTTP 헤더와 목적이 명확히 다르다.headers:대상 헤더: 모든 종류의 HTTP 요청 헤더를 대상으로 한다. Content-Type, Accept, 사용자 정의 헤더 등 어떤 헤더든 지정하여 매핑 조건으로 사용할 수 있다.목적:요청 매핑 조건: 특정 헤더의 존재 여부, 특정 값 여부를 기반으로 요청을 특정 핸들러 메서드에 매핑하는 데 사용된다. 예를 들어, 특정 사용자 에이전트에서 보낸 요청만 처리하거나, 특정 API 키를 담은 헤더가 있는 요청만 처리하도록 설정할 수 있다.응답 헤더 설정: 메서드에서 응..
특정 파라미터 매핑 (params)@RequestMapping 또는 HTTP 메서드 매핑 어노테이션(@GetMapping, @PostMapping 등)의 params 속성을 사용하여 특정 파라미터가 요청에 포함될 때만 매핑할 수 있다.@RestControllerpublic class ParameterController { @GetMapping(value = "/users", params = "gender=man") public String params() { return "params API가 호출 되었습니다."; }}위 예시는 GET 요청의 URL이 /users이고, gender 파라미터의 값이 man일 때만 해당 메서드를 실행한다.실제 URL 호출 예시: GET http:..
역할 및 특징HTTP 비연결성을 극복하여 데이터를 전달하는 방식 중 하나로, URL 경로에 포함된 값을 파라미터로 받아오는 역할을 수행한다.경로 변수는 URL 경로 내에서 중괄호 {} 로 묶어 표현한다. (예: /users/{id})기본적으로 @PathVariable로 설정된 경로 변수는 필수 값으로 간주되며, 값이 없을 경우 HTTP 상태 코드 404 Not Found 에러가 발생한다.Restful API 설계가 일반화됨에 따라 해당 어노테이션의 사용 빈도가 높아지고 있다.Restful API 설계 예시POST + posts/{postId}/comments : postId 글에 댓글 작성GET + posts/{postId}/comments : postId 글의 모든 댓글 조회..
기본 동작 방식Spring Boot 3.0 버전 이하: 명시된 URL 경로(/example)와 해당 경로의 하위 경로(/example/**) 모두 매핑을 허용한다.Spring Boot 3.0 버전 이상 (현재 버전): 명시된 URL 경로(/example)만 매핑을 허용한다.속성 설정value 속성을 배열 형태로 사용하여 여러 개의 URL 경로를 동시에 매핑할 수 있다.예시: @RequestMapping({" /example", "/example2", "/example3" })기본적으로 HTTP Method (POST, GET, PUT, PATCH, DELETE, HEAD) 모두 허용한다.method 속성을 사용하여 특정 HTTP Method만 허용하도록 지정할 수 있다.@RestControllerpubl..
@ComponentSpring Bean으로 등록하는 역할을 수행한다.Spring Bean은 애플리케이션의 구성 요소를 정의하는 객체이다.@Indexed 어노테이션과 함께 사용될 경우, 컴포넌트 스캔 시 Spring Bean으로 더욱 빠르게 등록되도록 돕는다.Spring Bean 및 컴포넌트 스캔 관련 내용은 숙련 주차 강의에서 상세히 다룰 예정이다.@Target하위 어노테이션이 적용될 수 있는 범위를 설정하는 메타 어노테이션이다.java.lang.annotation.ElementType Enum 속성을 사용하여 적용 대상을 지정한다.ElementType Enum 속성TYPE: 클래스, 인터페이스, 어노테이션 타입, 열거형에 적용 가능하다.FIELD: 필드 (클래스 변수, 인스턴스 변수)에 적용 가능하다...
Slf4j와 로깅Slf4j는 로깅 인터페이스이며, Logback 등의 구현체를 선택하여 사용한다. Spring Boot는 Logback을 기본 제공한다.로깅은 Thread 정보, 클래스 이름 등의 부가 정보를 포함하며, 운영 환경에서 System.out.println() 대신 사용된다.로그 레벨 설정을 통해 특정 심각도 이상의 로그만 출력하거나, 일자별로 로그를 저장 및 관리할 수 있다. 로그 레벨은 TRACE > DEBUG > INFO > WARN > ERROR 순으로 심각도가 높아진다.Slf4j 사용 예시:@Slf4j@RestControllerpublic class Slf4jController { @RequestMapping("/logging") public String logging() ..