본문 바로가기
웹개발/spring && springboot

Controller와 RestController 차이

by 지구별 여행자 임탱 2024. 1. 29.
728x90

Spring에서 class가 view반환을 위해 사용하는 컨트롤러라 지정해주기 위한 어노테이션이 존재 한다.

@Controller@RestController이다.

스프링 MVC의 전형적인 어노테이션은 @Controller이다.

RestFull 웹서비스의 컨트롤인 @RestController가 추후에 등장 하였다.

 

@Controller

일반적인 스프링에서는 ViewResolver가 동작해 매핑되는 논리적이 View이름이 반환 됩니다.

또한 데이터를 반환 할때도 View화면의 처리와 함께 반환 됩니다.

만일 화면이 아닌 데이터를 반환 해야 하는 경우에는 @ResponseBody를 사용해야 합니다.

@Controller
@ResponseBody
public class NewController{
	@RequestMapping(value="/hello")
    public ModelAndView main(){
    	ModelAndVew mv = new ModelAndView();
        mv.setViewName("/view/hello");
        mv.addObject("str", "abc");
        
        return mv;
    }
}

 

@RestController

RestFull API에 특화된 Controller로 주로 응답 본문에 데이터가 반환되는 웹서비스에 사용됩니다.

@Controller에서는 데이터만 반환해야 할 경우 @ResponseBody 어노테이션을 선언했지만 @RestController에서는 모두 포함되어 있어 생략해도 된다.

@RestController
public class NewController{
	@GetMapping("/hello")
    public MainDTO main(){
        MainDTO md = new MainDTO();
        md.setName("hong");
        md.setAge("34");
        
        return md;
    }
}

데이터는 json형태 {name:"hong", age:"34"}로 반환된다.

'웹개발 > spring && springboot' 카테고리의 다른 글

스프링 AOP의 정의  (0) 2024.02.23
[springboot]thymleaf(타임리프)  (0) 2024.02.23
Spring security  (0) 2024.01.30
스프링 컨트롤러 url매핑 정의  (0) 2024.01.29
Spring과 Springboot의 차이  (0) 2024.01.29