내일배움캠프 Spring 18일차 TIL

Skadi·2024년 1월 17일
0

1. 인텔리제이 설정

  1. Editor > General

    • Change font size with Command + Mouse Wheel in:
  2. Editor > General > Auto Import

    • Add unambiguous imports on the fly
    • Optimize imports on the fly
  3. Build, Execution, Deployment > Annotation Processors

    • Enable annotation processing
  4. lombok 설정

    • 모두검색 > Plugins > lombok 검색
    • installed 상태 확인 (안되어있으면 install하기)

2. 인텔리제이 단축키(Windows)

  1. Ctrl + Alt + S
    • 환경설정 열기
  2. Shift + Shift
    • 모두 검색 기능
  3. Ctrl + Shift + T
    • 현재 작성한 코드의 테스트 코드 작성 단축키
  4. Ctrl + Alt + Insert
    • 현재 디렉토리에서 추가(클래스, 패키지 등등)

3. 스프링 입문

  1. @GET, @POST, @PUT, @DELETE

    • GET
    @GetMapping("/api/get")
    @ResponseBody
    public String get() {
    return "GET Method 요청";
    }

    -POST

    @PostMapping("/api/post")
    @ResponseBody
    public String post() {
    return "POST Method 요청";
    }
    • GET
    @PutMapping("/api/put")
    @ResponseBody
    public String put() {
    return "PUT Method 요청";
    }
    • DELETE
    @DeleteMapping("/api/delete")
    @ResponseBody
    public String delete() {
    return "DELETE Method 요청";
    }
  2. 각종 Annotation

  • @RequestMapping : 중복되는 URL를 단축시켜줄 수 있습니다.
  • @RestController : @Controller + @ResponseBody
  • @Controller : 사용자의 요청을 처리하고 적절한 뷰로 전달하는 역할을 합니다.
  • @ResponseBody : @Controller에서 사용할 경우 해당 메서드의 반환 값은 뷰를 통해 렌더링되는 것이 아니라, HTTP 응답 body에 직접 쓰여지게 됩니다.
  • @PathVariable : URL 패턴의 일부를 변수로 받아오는데 사용되는 어노테이션입니다.
  • @RequestParam : HTTP 요청의 쿼리 문자열에서 파라미터를 추출하는 데 사용되는 어노테이션입니다.
  • @ModelAttribute : 메서드의 파라미터나 메서드 레벨에서 사용하여 모델 객체에 데이터를 바인딩하는데 사용되는 어노테이션입니다.
  1. @Controller vs @RestController
ControllerRestController
웹 애플리케이션의 일반 컨트롤러로 사용됨RESTful 웹 서비스에서 사용되는 컨트롤러
주로 View를 반환하는 용도로 사용주로 JSON 형식의 데이터를 반환하는 용도로 사용
@Controller 어노테이션 사용@RestController 어노테이션 사용
예를 들면, HTML 페이지 렌더링 등주로 AJAX 호출에 응답하고 데이터를 반환
  1. Jackson
  • JSON 구조체를 처리해주는 라이브러리
    - Object를 JSON 타입의 String으로 변환해줄 수 있습니다.
    - JSON 타입의 String을 Object로 변환해줄 수 있습니다
  • Object To JSON
@Test
@DisplayName("Object To JSON : get Method 필요")
void test1() throws JsonProcessingException {
Star star = new Star("Robbie", 95);
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
String json = objectMapper.writeValueAsString(star);
System.out.println("json = " + json);
}
  • JSON To Object
@Test
@DisplayName("JSON To Object : 기본 생성자 & (get OR set) Method 필요")
void test2() throws JsonProcessingException {
String json = "{\"name\":\"Robbie\",\"age\":95}"; // JSON 타입의 String
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
Star star = objectMapper.readValue(json, Star.class);
  1. @ModelAttribute vs @RequestParam
  • 둘다 생략 가능하다 그렇다면 Spring이 이를 구분하는 방법은?
  • 해당 Annotation이 붙는 파라미터에 따라 달라진다.
    - SimpleValueType(원시타입(int), Wrapper, Date 등) = @RequestParam
    • NotSimpleValueType(객체 등) = @ModelAttribute
  1. Spring의 다양한 Request 처리 방식
    1. @GetMapping("/star/{name}/age/{age}") - Path Variable 사용

    • URL 경로에서 변수를 추출하여 사용하는 방법입니다. @PathVariable 어노테이션을 사용하여 경로 변수를 메서드 파라미터에 매핑합니다.
     @GetMapping("/star/{name}/age/{age}")
     @ResponseBody
     public String helloRequestPath(@PathVariable String name, @PathVariable int age) {
         return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
     }
    
    1. @GetMapping("/form/param") - Request Parameter 사용 (GET)
    • URL의 쿼리 문자열에서 파라미터를 추출하여 사용하는 방법입니다. @RequestParam 어노테이션을 사용하여 요청 파라미터를 메서드 파라미터에 매핑합니다.
     @GetMapping("/form/param")
     @ResponseBody
     public String helloGetRequestParam(@RequestParam(required = false) String name, int age) {
         return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
     }
    1. @PostMapping("/form/param") - Request Parameter 사용 (POST)
    • POST 요청에서도 @RequestParam 어노테이션을 사용하여 요청 파라미터를 메서드 파라미터에 매핑하는 방법입니다.
     @PostMapping("/form/param")
     @ResponseBody
     public String helloPostRequestParam(@RequestParam String name, @RequestParam int age) {
         return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
     }
    1. @PostMapping("/form/model") - Form 데이터를 객체로 매핑
    • HTML 폼에서 전송된 데이터를 객체로 매핑하는 방법입니다. @ModelAttribute 어노테이션을 사용하여 폼 데이터를 객체에 바인딩합니다.
     @PostMapping("/form/model")
     @ResponseBody
     public String helloRequestBodyForm(@ModelAttribute Star star) {
         return String.format("Hello, @ModelAttribute.<br> (name = %s, age = %d) ", star.name, star.age);
     }
    
    1. @GetMapping("/form/param/model") - Request Parameter로 객체 매핑
    • Request Parameter를 객체로 매핑하는 방법입니다. @ModelAttribute 어노테이션을 사용하여 요청 파라미터를 객체에 바인딩합니다.
     @GetMapping("/form/param/model")
     @ResponseBody
     public String helloRequestParam(@ModelAttribute Star star) {
         return String.format("Hello, @ModelAttribute.<br> (name = %s, age = %d) ", star.name, star.age);
     }
    1. @PostMapping("/form/json") - JSON 데이터를 객체로 매핑
    • POST 요청에서 JSON 형식의 데이터를 객체로 매핑하는 방법입니다. @RequestBody 어노테이션을 사용하여 요청 본문을 객체에 매핑합니다.
     @PostMapping("/form/json")
     @ResponseBody
     public String helloPostRequestJson(@RequestBody Star star) {
         return String.format("Hello, @RequestBody.<br> (name = %s, age = %d) ", star.name, star.age);
     }

0개의 댓글