[Spring] Spring Controller - InitBinder, Model, ModelAttribute

2024. 3. 10. 12:51Backend/Spring

📝 [코드로 배우는 스프링 웹 프로젝트(개정판)]을 공부하며 배운 것들을 기록한 내용입니다. 자세한 내용은 해당 도서를 참고해주세요~!

 

Controller는 Request를 처리하는 로직이 담겨져 있으며, 모델과 뷰의 생명주기를 관리한다는 특징이 있습니다. 스프링에서 몇 가지 제공하는 annotation이나 데이터 전달자 Controller에서 사용될 수 있는데, 그중에서 몇 가지를 정리해보려고 합니다.


@InitBinder

- binding은 파라미터의 수집을 의미합니다. 개발 중 때때로 파라미터를 변환해서 사용해야 되는 경우가 있는데, 그럴 때 활용이 될 수 있습니다.

- 공식 홈페이지에서는 '@InitBinder란 WebDataBinder 인스턴스를 초기화할 때 사용하는 메서드'라고 설명하고 있습니다.

 

@Controller or @ControllerAdvice classes can have @InitBinder methods to initalize WebDataBinder instances

 

Model

- Controller에서는 DB에서 가져온 데이터를 Model이라는 객체에 담아 View로 전달할 수 있습니다.

//사용방법

@Controller
public Class TestController {
	@GetMapping("/test")
 	public void modelTest(Model model) {
		model.addAttribute("넘겨줄 변수명", DB에서 가져온 데이터);
		//이하 생략
	}
}

 

 

@ModelAttribute

- Controller에서 Java Bean 규칙에 맞는 객체는 View단으로 해당 객체를 반환해줍니다. 그러나 규칙에 맞지 않는 파라미터들이 있고, 해당 파라미터 다시 View단으로 보내줘야 하는 상황이 생깁니다. 그럴 때 @ModelAttribute를 사용할 수 있습니다.

//예시
@Controller
public String TestController {
	@GetMapping("/test02")
	public String test(@ModelAttribute("cnt") int cnt){
		
        //이하 생략
        //혹시나 .jsp를 사용한다면~ /WEB-INF/views/mvCheck.jsp로 return
        return "mvCheck";
    }
}

 

 

 

 

References

1. [코드로 배우는 스프링 웹 프로젝트] - 구멍가게 코딩단, 남가람북스

2. @InitBinder

 

'Backend > Spring' 카테고리의 다른 글

[Spring] Http Servlet - Request / Response  (0) 2024.03.10
[Spring] AOP  (0) 2024.03.10
[Spring] 컴포넌트 스캔, 의존 관계 주입, 조회되는 빈  (0) 2024.01.25
[Spring] Singleton Container  (1) 2024.01.24
[Spring] Class Assertions  (0) 2024.01.24