spring @Controller 주석과 @RestController 주석의 차이점
의 ★★★★★★★★★★★★★★★★★★★@Controller
★★★★★★★★★★★★★★★★★」@RestController
석입니니다다
수 있다@Controller
웹 MVC와 REST 애플리케이션 모두에 주석을 사용할 수 있습니까?
그렇다면 웹 MVC 또는 REST 응용 프로그램인지 구별하려면 어떻게 해야 합니까?
@Controller
봄 MVC.@RestController
으로, '아노메이션', '아노메이션', '아노메이션'을 하는 것 이외에는 아무것도 할 수 .@Controller
★★★★★★★★★★★★★★★★★」@ResponseBody
주석(「Javadoc」 참조)
따라서 다음 2개의 컨트롤러 정의에서 동일한 기능을 수행합니다.
@Controller
@ResponseBody
public class MyController { }
@RestController
public class MyRestController { }
아래 코드에서는 다음 코드와 다음 코드 간의 차이점을 보여 드리겠습니다.@controller
@Controller
public class RestClassName{
@RequestMapping(value={"/uri"})
@ResponseBody
public ObjectResponse functionRestName(){
//...
return instance
}
}
★★★★★★★★★★★★★★★★★」@RestController
@RestController
public class RestClassName{
@RequestMapping(value={"/uri"})
public ObjectResponse functionRestName(){
//...
return instance
}
}
@ResponseBody
는 디폴트로 활성화 되어 있습니다.함수 시그니처 위에 추가할 필요가 없습니다.
「 」를 사용하고 @RestController
할 수 (보기를 할 수 없습니다).Viewresolver
spring및 yes (스프링/스프링부츠)로 합니다.@ResponseBody
이 경우에는 필요 없습니다.
「 」를 사용하고 @Controller
Spring Web MVC.
@RestController
이 달린 는 '''와 동일합니다.@Controller
, ★★★★★★★★★★★★★★★★.@ResponseBody
를 참조해 주세요.
@RestController
의 조합입니다.@Controller
★★★★★★★★★★★★★★★★★」@ResponseBody
.
「」의 .@Controller
를 하지 않는 @ResponseBody
★★★★
@RestController
는 뷰가 아닌 응답으로 개체를 반환합니다.
사실, 조심해요. 정확히 똑같지는 않거든요.
내에서 , 그 수신기는 「」(「Controllers」)에.@RestController
, 「」, 「」에서는 @Controller
주석 달린 컨트롤러
즉, 요격기의 구성:
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TemplateMappingInterceptor()).addPathPatterns("/**", "/admin-functions**").excludePathPatterns("/login**");
}
}
스프링 컨트롤러 선언:
@Controller
public class AdminServiceController {...
단, 동작합니다.
@RestController
public class AdminServiceController {...
는, 인터셉터를 관련지을 수 없습니다.
스프링 설명서(Spring RestController 설명서)에서 볼 수 있듯이 나머지 컨트롤러 주석은 컨트롤러 주석과 동일하지만 다음과 같이 가정합니다.@ResponseBody
는 기본적으로 활성화 되어 있기 때문에 모든 Java 오브젝트는 응답 본문의 JSON 표현으로 시리얼화 됩니다.
@Controller
View
@RestController
ResponseBody
.
Spring4+의 새로운 @RestController 주석: 클래스를 모든 메서드가 뷰 대신 도메인 개체를 반환하는 컨트롤러로 표시합니다.@Controller와 @Response Body의 약자입니다.
@RestController
는 Spring 4.0.1 이후 제공되었습니다.이러한 컨트롤러는 @RequestMapping 메서드가 기본적으로 @ResponseBody의 의미를 가정함을 나타냅니다.
이전 버전에서도 다음과 같은 기능을 사용할 수 있었습니다.
@RequestMapping
와 조합하여@ResponseBody
맘에 들다@RequestMapping(value = "/abc", method = RequestMethod.GET, produces ="application/xml") public @ResponseBody MyBean fetch(){ return new MyBean("hi") }
<mvc:annotation-driven/>
JSON을 잭슨 또는 xml과 함께 사용하는 방법 중 하나로 사용할 수 있습니다.- MyBean은 다음과 같이 정의할 수 있습니다.
@XmlRootElement(name = "MyBean") @XmlType(propOrder = {"field2", "field1"}) public class MyBean{ field1 field2 .. //getter, setter }
@ResponseBody
는 MVC에서 뷰로 취급되며 디스패처 서블릿에서 디스패치되는 대신 직접 디스패치되며 각 변환기는 응답을 text/html, application/xml, application/json 등의 관련 형식으로 변환합니다.
단, Response Body 및 각 컨버터와 Restcler가 이미 연결되어 있습니다.둘째, 여기서는 response body를 변환하는 대신 자동으로 http 응답으로 변환되기 때문입니다.
@Controller
: 이 주석은 의 특수 버전일 뿐입니다.@Component
클래스 패스 스캔에 근거해 컨트롤러 클래스를 자동 검출할 수 있습니다.@RestController
: 이 주석은 의 특수 버전입니다.@Controller
그 때문에,@Controller
그리고.@ResponseBody
주석을 자동으로 추가하지 않아도 됩니다.@ResponseBody
맵핑 방법에 따라 달라집니다.
@Controller 주석은 클래스가 웹 컨트롤러와 같은 "Controller"임을 나타내고 @RestController 주석은 클래스가 기본적으로 @RequestMapping 메서드가 @ResponseBody 의미론을 가정하는 컨트롤러임을 나타냅니다.즉, REST API를 지원합니다.
@Controller
JSP에 관한 정보입니다. 보기를 반환할 수 있습니다. @RestController
JSON은 REST를 사용하여 랩합니다.@Controller
★★★★★★★★★★★★★★★★★」@ResponseBody
주석을 함께 붙입니다.
@RestController
의 구성입니다.@Controller
★★★★★★★★★★★★★★★★★」@ResponseBody
하지 @ResponseBody
에서는 ' 하다'를 .@Restcontroller
.
@Controller 및 @ResponseBody를 사용하는 대신 @RestController를 사용하면 Spring 4.0 이후 Rest API를 공개할 수 있습니다.
언급URL : https://stackoverflow.com/questions/25242321/difference-between-spring-controller-and-restcontroller-annotation
'source' 카테고리의 다른 글
125% 확장 시 Windows OS Chrome 브라우저에서 body Scroll End 이벤트가 트리거되지 않음 [ag-grid-vue] (0) | 2022.08.25 |
---|---|
표준위원회가 주목하는 이국적인 아키텍처 (0) | 2022.08.25 |
Vue 슬롯의 렌더링된 HTML 콘텐츠를 변수로 가져옵니다. (0) | 2022.08.25 |
자바 키스토어에 .cer 증명서를 Import하려면 어떻게 해야 합니까? (0) | 2022.08.25 |
vue-cli 3에서 프로젝트 템플릿에 Vuetify 추가: App.vue에 스크립트 태그를 추가하면 앱이 중단됩니까? (0) | 2022.08.25 |