오늘은 항해99 캠프 5주 차 첫 번째 날이다.
오늘은 항해에서 제공되는 스프링 심화주차 강의를 들었다. 사실 오늘 알고리즘 문제도 하나 풀고 지난주 배웠던 것들 블로그에 정리하려고도 했는데.. 몸상태가 안 좋아서 강의만 듣게 되었다ㅠㅠ
강의는 Refactoring, Ioc, DI, Jwt에 대한 것이었고 MySelectShop이라는 프로젝트를 같이 하면서 수업이 진행되었다.
관련 내용은 추후에 블로그에 정리해서 업로드 할 예정이다.
오늘 공부하면서 소소하게 궁금한 것을 2가지 찾아보았다.
1. @Controller 와 @RestController의 차이는?
@Controller는 일반적인 웹 애플리케이션에서 사용되는 어노테이션으로, View와 상호작용하여 데이터를 전송하고 받는다.
즉, HTML 화면을 보여주기 위한 기능을 수행한다.
@RestController는 RESTful 웹 서비스를 개발할 때 사용되는 어노테이션으로, JSON 형태의 데이터를 전송하고 받는 데에 특화되어 있다. 즉 데이터를 CRUD 기능으로 처리하며, 주로 API 서버를 개발할 때 사용된다. @RestController는 @Controller 와 @ResponseBody를 합쳐놓은 것이다.
@Controller는 메서드가 반환하는 데이터를 View에 전달하고 @RestController는 메서드가 반환하는 데이터를 HTTP Response Body에 직접 넣어주는 역할을 한다.
2. ModelAndView
ModelAndView는 Spring Framework에서 사용되는 클래스로, Controller에서 처리한 결과 데이터와 화면(View) 정보를 담아서 반환하는 역할을 한다.
Controller에서 ModelAndView 객체를 반환하면, Spring MVC는 ViewResolver를 사용하여 View 정보를 찾고, 해당 View를 렌더링 한다. 이때 Model 객체에 저장된 데이터는 View에서 참조할 수 있다.
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public ModelAndView hello() {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", "Hello, World!");
return modelAndView;
}
위 코드는 "/hello" URL로 GET 요청이 들어왔을 때, "hello" 뷰에 "Hello, World!"라는 메시지를 전달하는 예시이다.
ModelAndView 객체에 "hello"라는 뷰 이름과 "message"라는 모델 속성을 추가하고, ModelAndView 객체를 반환하여 Viewresolver가 해당 뷰를 찾아서 렌더링 한다.
이렇게 ModelAndView를 사용하면 Controller에서 처리한 결과 데이터와 View 정보를 한 번에 전달할 수 있기 때문에 유용하다.
-끄읕-