๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปStudy/Spring

@RestController์™€ ํ•œ๊ธ€ ์ถœ๋ ฅ ์„ค์ •

* @RestController

 

์ปจํŠธ๋กค๋Ÿฌ ํ•˜๋‚˜๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

 

 

 

NoticeController.java

package com.newlecture.web.controller.api;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//RESTFULํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํด๋ž˜์Šค
@RestController("apiNoticeController")
@RequestMapping("/api/notice/")
public class NoticeController {

	@RequestMapping("list")
	public String list() {
		
		return "notice list";
	}
}

 

@RestController๋Š” restfulํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”, ํŠนํ™”๋œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋‹ค๋ฉด ๋ฉ”์†Œ๋“œ์— @ResponseBody๊ฐ€ ์—†๋”๋ผ๋„ ๋ฌธ์ž์—ด์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

@RestController์— ๋ถ™์€ "apiNoticeController"์€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์‹๋ณ„์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋งŒ์•ฝ ์‹๋ณ„์ž, ์ฆ‰ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋‹ค๋ฅธ customer ํŒจํ‚ค์ง€ ์•ˆ์— NoticeController ํด๋ž˜์Šค๊ฐ€ ๋˜ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ๋ฌต์‹œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋นˆ์ด ์ƒ์„ฑ๋œ๋‹ค.

 

NoticeController noticeController = new NoticeController();

๋˜๋Š”
<bean id="noticeController" class="ํŒจํ‚ค์ง€.NoticeController">

 

ํŒจํ‚ค์ง€๋Š” ๋‹ค๋ฅด๋”๋ผ๋„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด์˜ ์ด๋ฆ„ ๋˜๋Š” bean์˜ id๊ฐ€ ๊ฐ™์„ ์ˆ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹๋ณ„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด @RestController("apiNoticeController")์™€ ๊ฐ™์ด ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜์—๋งŒ ๋ถ™์—ฌ๋„ ๋˜๊ณ , ๋‘˜ ๋‹ค ๋ถ™์—ฌ๋„ ๋œ๋‹ค.

 

 

 

* ํ•œ๊ธ€ ์ถœ๋ ฅ ์„ค์ •

 

์˜๋ฌธ์ž๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜์ง€๋งŒ, ํ•œ๊ธ€ ๋ฌธ์ž๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฌธ์ž์—ด์ด ๊นจ์ง€๊ฒŒ ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ xml ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

 

servlet-context.xml

    <!-- ์ปจํŠธ๋กค๋Ÿฌ์—์„œ RequestMapping ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํƒœ๊ทธ -->
    <mvc:annotation-driven>
    	<mvc:message-converters> 
    	<!-- 
    	@ResponseBody๋กœ String ์ฒ˜๋ฆฌํ•  ๋•Œ ํ•œ๊ธ€ ์ฒ˜๋ฆฌ
    	๋งคํ•‘๋œ url์„ ์ฐพ์•„๊ฐ„ ํ›„ ๊ฐ’์„ ResponBody ํƒ€์ž…์œผ๋กœ ๊ฐ’์„ ๋ฆฌํ„ดํ•  ๋•Œ, 
        ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ํ•œ๊ธ€์ด๋ผ๋ฉด ๊ฐ€๋กœ์ฑ„์„œ ํ•œ๊ธ€ ์„ค์ •.
    	-->
    		<bean class="org.springframework.http.converter.StringHttpMessageConverter">
    			<property name="supportedMediaTypes">
    				<list>
    					<value>text/html;charset=UTF-8</value>
    				</list>
    			</property>
    		</bean>
    	</mvc:message-converters>
    </mvc:annotation-driven> 

 

 

annotation-driven ํƒœ๊ทธ๋ฅผ ์—ด๊ณ  message-converters๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. (์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด converter๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.)


annotation-driven ์„ค์ •์œผ๋กœ RequestMapping์„ ํ†ตํ•ด ๋งคํ•‘๋œ url์„ ์ฐพ์•„๊ฐ„ ํ›„ ๊ฐ’์„ ResponBody ํƒ€์ž…์œผ๋กœ ๊ฐ’์„ ๋ฆฌํ„ดํ•  ๋•Œ, ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ํ•œ๊ธ€์ด๋ผ๋ฉด ๊ฐ€๋กœ์ฑ„์„œ ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ์„ ์„ค์ •ํ•œ๋‹ค.