1. @Controller (View 이름 반환)

@Controller
public class UserController {
    
    @GetMapping("/user")
    public String getUser(Model model) {
        model.addAttribute("user", user);
        return "user"; // View 이름 반환 → HTML 등 생성
    }
}

기본적으로 View의 이름을 반환하고, JSON 응답을 원하면 @ResponseBody를 붙여야 함

2. @RestController(JSON 응답)

@RestController
public class UserController {
    
    @GetMapping("/api/user")
    public User getUser() {
        return user; // 객체 반환 → JSON 변환
    }
}

모든 핸들러 메서드에 @ResponseBody 자동 적용

ViewResolverView를 거치지 않고 바로 JSON 변환 후 응답, 이후 프론트엔드에서 처리

@Controller@RestController 모두 @Component를 포함하고 있어 스프링 컨테이너에 자동 등록됨