source

spring @Controller 주석과 @RestController 주석의 차이점

factcode 2022. 8. 25. 23:45
반응형

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의 의미를 가정함을 나타냅니다.

이전 버전에서도 다음과 같은 기능을 사용할 수 있었습니다.

  1. @RequestMapping와 조합하여@ResponseBody맘에 들다@RequestMapping(value = "/abc", method = RequestMethod.GET, produces ="application/xml") public @ResponseBody MyBean fetch(){ return new MyBean("hi") }

  2. <mvc:annotation-driven/>JSON을 잭슨 또는 xml과 함께 사용하는 방법 중 하나로 사용할 수 있습니다.

  3. MyBean은 다음과 같이 정의할 수 있습니다.

@XmlRootElement(name = "MyBean") @XmlType(propOrder = {"field2", "field1"}) public class MyBean{ field1 field2 .. //getter, setter }

  1. @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

반응형