[Spring Framework] @RestController & @Controller ์ฐจ์ด

2025. 5. 12. 15:48ยท๐ŸŒณSpring/๐ŸŒฑSpring Framework

@Controller

  • ํ•ด๋‹น ์• ๋„ˆํ…Œ์ด์…˜์€ ์‘๋‹ต์— ๋Œ€ํ•ด์„œ ๋ฌธ์ž์—ด ๊ฒฝ๋กœ๋ฅผ ๋ฆฌํ„ด์„ ํ•˜๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ์— ์ ‘๋ฏธ์–ด(suffix)๊ฐ€ ์„ค์ •์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ถ™๊ฒŒ ๋จ.
  • ์˜ˆ์‹œ) html, jsp ๋“ฑ
  • ๋ฆฌํ„ด์ด ๋˜๋ฉด DispatcherServlet์„ ํ†ตํ•ด ๋ทฐ ๋ฆฌ์กธ๋ฒ„์— ๋ฆฌํ„ด์ด ๋˜์–ด ํ•ด๋‹น html ๋ทฐ๋ฅผ ๋ฆฌํ„ด์„ ํ•ด์ค€๋‹ค.

@RestController

  • Controller์™€ ResponseBody ์• ๋„ˆํ…Œ์ด์…˜์ด ํ•ฉ์„ฑ ๋˜์–ด์žˆ๋Š” ์• ๋„ˆํ…Œ์ด์…˜์ž„.
  • ResponseBody: ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜ ๊ฐ’์„ HTTP ์‘๋‹ต์˜ Body์— ์ง์ ‘ ์“ฐ๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž„

@ResponseBody

  • ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜ ๊ฐ’์„ HTTP ์‘๋‹ต์˜ Body์— ์ง์ ‘ ์“ฐ๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž„
  • ๋ฉ”์„œ๋“œ์—์„œ ๋ฆฌํ„ด์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ HttpMessageConverter์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋จ.

@RequestBody

  • ์š”์ฒญ์— ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜
  • ์‰ฝ๊ฒŒ ๋งํ•ด, ๋ฐ์ดํ„ฐ๊ฐ€ json ํ˜•ํƒœ๋กœ ๋„˜์–ด์˜ค๋ฉด ์• ๋„ˆํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ•„๋“œ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์–ด ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ์›๋ฆฌ์ž„.
  • ๋‚ด๋ถ€์ ์œผ๋กœ ํ—ค๋”์˜ Content-Type์„ ํ™•์ธํ•œ ๋’ค json์ด๋ฉด, MappingJackson2HttpMessageConverter ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•จ.

SpringBoot ๊ธฐ์ค€ ์ž์ฃผ ์“ฐ์ด๋Š” Converter ์ข…๋ฅ˜ 

StringHttpMessageConverter text/plain ๋ฌธ์ž์—ด ๋ณ€ํ™˜
MappingJackson2HttpMessageConverter application/json ๋ณ€ํ™˜ (Jackson ์‚ฌ์šฉ)
ByteArrayHttpMessageConverter ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฒ˜๋ฆฌ (ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋“ฑ)
FormHttpMessageConverter application/x-www-form-urlencoded ํผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
Jaxb2RootElementHttpMessageConverter application/xml ๋“ฑ XML ์ฒ˜๋ฆฌ (JAXB ๊ธฐ๋ฐ˜)
  • ์ฐธ๊ณ ๋กœ HttpMessageConverter ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ํ•ด์„œ Custom Converter ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

HttpMessageConverter

  • Spring MVC์—์„œ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๋ณธ๋ฌธ์„ Java ๊ฐ์ฒด์—์„œ ๋‹ค์–‘ํ•œ ํฌ๋งท์œผ๋กœ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
  • ์‰ฝ๊ฒŒ๋งํ•ด, ์ „๋žต ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐ์ฒด๋ฅผ JSON, XML, text ๋“ฑ์œผ๋กœ ๋ณ€ํ™˜ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ง๋ ฌํ™”์ž„.
  • ๋ฐ˜๋Œ€๋กœ ์—ญ์ง๋ ฌํ™”๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์„ ๊ฐ์ฒด๋กœ ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ฃผ๋Š”๊ฒƒ์ž„.
  • @ResponseBody, @ReuqestBody ์• ๋„ˆํ…Œ์ด์…˜์€ ๋””ํดํŠธ๋กœ MappingJackson2HttpMessageConverter ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•จ.
  • ์ฆ‰, ์š”์ฒญ๊ณผ ์‘๋‹ต์„ JSON ํ˜•ํƒœ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š”๊ฒƒ์ด ๋””ํดํŠธ๋ผ๋Š” ์˜๋ฏธ์ž„.

๋ฆฌํ„ด๊ฐ’์ด ResponseEntity ์ธ ๊ฒฝ์šฐ

  • HttpEntityMethodProcessor ํด๋ž˜์Šค๊ฐ€ ์„ ํƒ์ด ๋˜๊ณ  ResponseEntity ๋‚ด๋ถ€์˜ body ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ HttpServletResponse ๋„ฃ์Œ.
  • ํ•ด๋‹น ํด๋ž˜์Šค๋Š” HandlerMethodReturnValueHandler์˜ ๊ตฌํ˜„์ฒด์ด๋‹ค.
  • HttpMessageConverter ๋‚ด๋ถ€์—์„œ HttpServletResponse ํด๋ž˜์Šค ๋‚ด๋ถ€๋ฅผ ํ™•์•ˆ ํ•œ ๋’ค
  • body, status, header ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๊ฐ’์„ ๋ฝ‘์•„์„œ JSON ๋ฐ์ดํ„ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ 

'๐ŸŒณSpring > ๐ŸŒฑSpring Framework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring Framework] DispatcherServle  (0) 2025.05.12
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ  (0) 2024.11.14
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ  (1) 2024.10.21
[Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ  (0) 2024.10.20
[Spring Framework] Spring & Spring Framework ์ฐจ์ด  (0) 2024.10.19
'๐ŸŒณSpring/๐ŸŒฑSpring Framework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring Framework] DispatcherServle
  • [Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ
  • [Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
  • [Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (151)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (26)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (20)
        • ๐Ÿ“Java Programming (19)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋ฐฉํ†ต๋Œ€
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    spring
    ๋‹คํ˜•์„ฑ
    ๋ฐฉ์†ก๋Œ€
    ์„ธ๊ณ„ํ™”
    ํด๋ž˜์Šค
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    Spring Framework
    ํด๋ผ์šฐ๋“œ
    ์ž…์ถœ๋ ฅ
    ์ปดํŒŒ์ผ๋Ÿฌ
    Java
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์Šคํ”„๋ง
    ์ž๋ฐ”
    Python
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Spring Framework] @RestController & @Controller ์ฐจ์ด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”