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
9. @ControllerAdvice
10. @JsonManagedReference
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