1. @RequestParam

  • 클라이언트가 전송한 HTTP 요청의 파라미터 값을 메서드에 전달하는 데 사용됩니다.
  • 주로 GET 요청에서 URL에 붙는 쿼리 파라미터나 POST 요청에서 폼 데이터를 처리합니다.
  • 예시: /search?query=apple 요청에서 query 파라미터 값을 가져옵니다.
@GetMapping("/search")
public String search(@RequestParam("query") String searchQuery) {
    // searchQuery는 "apple" 값을 가짐
}

2. @SessionAttribute

  • 세션에서 특정 데이터를 읽어와 메서드 파라미터에 전달하는 데 사용됩니다.
  • 이는 세션 범위에 저장된 값을 쉽게 가져올 수 있습니다.
@GetMapping("/profile")
public String profile(@SessionAttribute("user") User user) {
    // 세션에 저장된 "user" 객체를 가져옴
}

3. @SessionAttributes

  • 모델에 추가된 특정 속성을 세션에 저장하여 해당 세션 동안 지속적으로 접근할 수 있도록 합니다.
  • 주로 폼 데이터를 여러 요청 간 유지하는 데 사용됩니다.
@SessionAttributes("cart")
public class CartController {
    // "cart"라는 모델 속성은 세션에 저장됨
}

4. @ModelAttribute

  • 요청 매개변수를 자동으로 특정 객체에 바인딩하거나, 뷰에 데이터를 전달할 때 사용됩니다.
  • 모든 요청 전에 특정 데이터를 모델에 미리 설정할 수 있습니다.
@ModelAttribute("user")
public User setUpUser() {
    return new User();
}

5. @RequestBody

  • HTTP 요청 본문(body)의 데이터를 자바 객체로 변환하여 메서드 파라미터에 전달하는 데 사용됩니다.
  • 주로 JSON 형식의 데이터를 처리할 때 유용합니다.
@PostMapping("/create")
public String createUser(@RequestBody User user) {
    // HTTP body의 JSON 데이터를 User 객체로 변환
}

6. @ResponseBody

  • 메서드의 반환 값을 HTTP 응답 본문(body)에 직접 작성하여 클라이언트에게 전송합니다.
  • 주로 JSON 또는 XML 데이터를 반환할 때 사용됩니다.
@GetMapping("/user")
@ResponseBody
public User getUser() {
    return new User("John", "Doe");
}

7. @RedirectAttributes

  • 리다이렉트할 때 플래시 속성을 사용하여 임시 데이터를 전달하는 데 사용됩니다.
  • POST-Redirect-GET 패턴에서 메시지나 데이터를 전달할 때 유용합니다.
@PostMapping("/save")
public String save(RedirectAttributes redirectAttributes) {
    redirectAttributes.addFlashAttribute("message", "Save successful!");
    return "redirect:/result";
}

8. @Controller

  • 역할: Spring MVC에서 이 어노테이션은 클래스가 컨트롤러 역할을 한다는 것을 나타냅니다. 웹 요청을 처리하고, 모델 데이터를 뷰로 전달하는 데 사용됩니다.
  • 예시:
    @Controller
    @RequestMapping("/model")
    public class MyController {
        // 요청 처리 메서드들
    }

9. @ControllerAdvice

  • 역할: 전역적으로 예외 처리, 모델 데이터, 바인딩 설정 등을 모든 컨트롤러에 적용할 수 있게 해주는 어노테이션입니다.
  • 예시:
    @ControllerAdvice
    public class GlobalControllerAdvice {
        @ModelAttribute
        public void addAttributes(Model model) {
            model.addAttribute("globalMessage", "Welcome!");
        }
    }

10. @JsonManagedReference

  • 역할: Jackson 라이브러리에서 무한 순환 참조를 방지하기 위해 사용됩니다. 부모-자식 관계의 JSON 직렬화 시, 한쪽을 @JsonManagedReference, 반대쪽을 @JsonBackReference로 설정하여 순환을 막습니다.
  • 예시:
    @Entity
    public class Parent {
        @JsonManagedReference
        private List<Child> children;
    }

11. @InitBinder

  • 역할: 컨트롤러의 요청 파라미터를 변환하거나 커스텀 에디터를 등록하여 폼 데이터를 바인딩하기 전에 수정할 수 있도록 설정하는 어노테이션입니다.
  • 예시:
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    }

12. @Valid

  • 역할: 객체의 유효성 검사를 위해 사용됩니다. 주로 폼 데이터를 검증할 때 사용하며, DTO 클래스에 정의된 검증 조건에 따라 자동으로 검증이 수행됩니다.
  • 예시:
    @PostMapping("/submit")
    public String submitForm(@Valid @ModelAttribute("user") User user, BindingResult result) {
        if (result.hasErrors()) {
            return "form";
        }
        return "success";
    }

'Spring Framework' 카테고리의 다른 글

XMLHttpRequest(XHR) - 비동기 자바스크립트  (3) 2024.10.14
@Valid와 @Validated  (0) 2024.10.14
Redirect(리다이렉트)  (0) 2024.10.10
핸들러 메서드(Handler Method) - 컨트롤러  (0) 2024.10.10
프록시와 어댑터  (0) 2024.10.08

+ Recent posts