티스토리 뷰

스프링학습테스트

: ***-practice 브랜치로 실습

INTRO

  • 프레임워크: 구현해야 하는 것들을 미리 구현해놓고 재사용. 프레임워크에 맞게 구현을 하면 다양하게 활용가능하다.
  • 스프링은 여러 프레임워크 중 하나이다.
  • 라이브러리와 프레임워크의 차이점
    • 라이브러리: 필요한 기능이 있을 때, 개발자가 능동적으로 라이브러리를 사용한다. 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
    • 프레임워크: 애플리케이션 코드가 프레임워크에 의해 사용된다. 개발자가 프레임워크에 맞게 코드를 작성하여 활용하게 된다.
  • 스프링은 방대하다!! 따라서 동작원리를 이해하고 필요할 때마다 찾아서 적용할 수 있는 학습이 필요하다.
  • 학습테스트를 통해서 스프링의 기능을 학습하였다.
  • 수업은 대부분 학습 방법에 대한 내용이 주를 이루며 개념에 대한 설명과 질문에 대한 답변 방식으로 이루어졌다.

시작하기

스프링공식문서의 quickstart 실습

스프링공식문서의 rest 간단 실습

초간단 방문횟수 서비스 실습

Spring MVC

SpringMVC 학습테스트 실습내용

@Controller

  • @Controller 어노테이션이 붙은 컨트롤러 클래스를 통해 요청에 따른 처리가 이루어진다.
  • @RestController@Controller@ResponseBody가 포함된 것이다.

RequestMapping

  • 컨트롤러와 http 요청을 메핑하기 위해서 사용한다.
  • @RequestMapping은 기본적으로 모든 Http 메서드와 매핑된다.
  • 특정하여 @GetMapping, @PostMapping 등으로 사용가능하다.
  • @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE), @PostMapping(consumes = MediaType.APPLICATION_XML_VALUE) 등 특정 미디어 타입을 지정할 수 있다.
  • produces는 Accept 헤더, consumes는 Content-Type 헤더에 기반한다. json 형식이 디폴트로 설정되어 있으며 대부분 json을 사용하므로 잘 명시하진 않는 듯 하다.
  • @GetMapping(path = "/message/**", params = "name=hello")처럼 params나 header를 지정할 수도 있으며, url 경로를 지정할 수도 있다.

MethodArgument

  • @RequestParam을 사용하며 param으로 요청되는 값을 받을 수 있다.

      @GetMapping("/users")
      public ResponseEntity<List<User>> requestParam(@RequestParam("name") String userName) {
          List<User> users = Arrays.asList(
                  new User(userName, "email"),
                  new User(userName, "email")
          );
          return ResponseEntity.ok().body(users);
      }
  • @RequestBody를 사용하여 클라이언트에서 보내주는 값을 받을 수 있다. Spring의 HttpMessageConverter가 Object 로 변환해준다.

      @PostMapping("/users/body")
      public ResponseEntity requestBody(@RequestBody User user) {
          User newUser = new User(1L, user.getName(), user.getEmail());
          return ResponseEntity.created(URI.create("/users/" + newUser.getId())).body(newUser);
      }

ReturnValue

  • Controller에서 메소드의 리턴값을 통해 응답 형식을 결정한다.
  • @ResponseBody, String, ResponseEntity<T> 등이 있다.
  • @ResponseBody는 HttpMessageConverter를 통해 직렬화해준다.
  • ResponseEntity@ResponseBody와 비슷하나 status와 body를 가진다.

Exception

  • Controller에서 @ExceptionHandler({어떤예외.class})를 붙여 메소드로 예외핸들링을 할 수 있다.
  • @ControllerAdvice를 클래스 단위에 붙이면 Controller에서 발생하는 예외를 잡는 클래스가 되어 같은 클래스 안에 있지 않아도 예외처리가 가능하다.

참고

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함