[Spring Boot] @RestController와 @Controller의 차이

2025. 4. 7. 17:20·🍏 Spring Boot

이 글을 작성하는 이유

계속 404가 뜨던 요청이 
@Controller에서 @RestController을 붙이자마자 해결된 것이다
도대체 왜일까 내 10시간을 어디에 바친 것인가

그러나 이 모든 것은 내 무지에서 출발하였다...

한바탕 데이고 알아보는 두 어노테이션의 차이점. 


✴️ @Controller ?

컨트롤러는 애플리케이션을 구성하는 핵심 요소 중 하나로,
URI와 매핑하여 클라이언트의 요청에 알맞은 응답을 반환하는 곳이다.

Spring의 @Controller 어노테이션은 View를 반환한다.

 

✴️ @RestController ?

Controller 앞에 Rest가 붙은 이 RestController는 
@Controller + @ResponseBody 의 개념이라고 한다.

그래서 @RestController 어노테이션은 JSON 형태의 데이터를 반환한다.

 


 

🧩 왜 @RestController로 바꾸니까 404가 해결됐을까?

1. @Controller는 뷰를 반환한다고 생각한다

예를 들어,

@Controller
public class MyController {
 	@GetMapping("/hello") 
 	public String hello() {
 		return "hello"; 
 	} 
 }
  • 이 경우, "hello"는 templates/hello.html이라는 뷰 파일을 찾는다.
  • 만약 해당 뷰 파일이 없으면, 스프링은 404 에러를 응답하게 된다.

2. @RestController는 응답 바디로 데이터를 반환한다

@RestController
public class MyController {
	@GetMapping("/hello") 
    public String hello() {
    	return "hello"; 
    } 
}
  • 여기서는 "hello"가 문자열 그대로 HTTP 응답 본문에 들어가고,
  • 뷰 파일을 찾지 않기 때문에 404가 발생하지 않는다.

 

REST API 만들 때는 대부분 @RestController를 사용한다고 한다!

이제 실수하지 않도록 노력해야지... 

'🍏 Spring Boot' 카테고리의 다른 글

[Spring Boot] Google OAuth2 로그인 설정  (0) 2025.04.14
[Spring Boot] Google Firebase와 Spring Boot 연결  (1) 2025.04.14
[Spring Boot] The requestURI was rejected because it can only contain printable ASCII characters  (0) 2025.03.25
[Spring Boot] @RequestParam, @RequestBody  (2) 2025.03.17
[Spring Boot] 1. RDS MySQL 배포하기  (0) 2025.03.17
'🍏 Spring Boot' 카테고리의 다른 글
  • [Spring Boot] Google OAuth2 로그인 설정
  • [Spring Boot] Google Firebase와 Spring Boot 연결
  • [Spring Boot] The requestURI was rejected because it can only contain printable ASCII characters
  • [Spring Boot] @RequestParam, @RequestBody
cosmo225
cosmo225
개발자로 향하는 길 👽
  • cosmo225
    to cosmo!
    cosmo225
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • 🍏 Spring Boot (13)
      • 🦖 Git (3)
      • 🦎 프로그래밍 (4)
      • 🦕 etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링부트
    구글로그인
    springboot
    데이터베이스
    java
    백엔드
    배포
    GIT
    Spring
    oauth2
    Programming
    프로그래밍
    스프링
    github
    깃허브
    Back-end
    google
    파이어베이스
    firebase
    개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cosmo225
[Spring Boot] @RestController와 @Controller의 차이
상단으로

티스토리툴바