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할 수 (보기를 할 수 없습니다).Viewresolverspring및 yes (스프링/스프링부츠)로 합니다.@ResponseBody이 경우에는 필요 없습니다.
「 」를 사용하고 @ControllerSpring 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 표현으로 시리얼화 됩니다.
@ControllerView@RestControllerResponseBody.
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를 지원합니다.
@ControllerJSP에 관한 정보입니다. 보기를 반환할 수 있습니다. @RestControllerJSON은 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 |

