2013-10-16 1 views
2

내 도메인 개체를 JSON 엔터티로 반환하는 REST API를 만듭니다.@ResponseBody를 사용하여 모든 메서드에 주석 달기 피하기

지금까지 내가 너무처럼 주석이 모든 방법이있는 컨트롤러를 만드는 오전 :

@RequestMapping(value="/entity/{id}", produces = "application/json; charset=utf-8", method=RequestMethod.GET)  
@ResponseBody 
public String getEntity(@PathVariable Long id) 
{ 
    (...) 
} 

을이 컨트롤러 내 모든 방법을 JSON 개체이기 때문에이 봄을 암시 할 수있는 방법이있다 그 모든 방법이 @ResponseBody 개체를 반환하고 싶습니까? 그렇지 않으면 반환 된 객체의 인코딩이 잘못되어 JSON으로 반환되지 않기 때문에 produces = "application/json; charset=utf-8"으로 주석을 추가해야합니다. 또한 각 메서드에 주석을 달지 않고 모든 메서드에 대해이 작업을 수행 할 수 있습니까?

답변

1

당신은 유형 (클래스) 수준에 produces@RequestMapping을 사용할 수 있습니다 - 저를 위해이 문제없이 작동합니다

@Controller 
@RequestMapping(value = "/foo", produces = "text/plain; charset=UTF-8") 
public class FooController { ... } 

을 그러나 definition에서 볼 수 있듯이, @ResponseBody은 봄에 메소드 레벨에 적용 할 수 있습니다 3.x.

편집 : @Prancer은 v4.0부터 시작하여 Spring supports @ResponseBody on type level으로 지적했습니다.

+0

어쨌든 도움이되었습니다. 그것은 매력처럼 작동했습니다 : –

+1

Spring 버전 4.0부터, @ResponseBody는 상속 된 타입 레벨에 추가 될 수 있으므로 메소드 레벨에서 추가 될 필요가 없습니다. – Prancer

+0

@Prancer, 그것을 지적 해 주셔서 감사합니다. 그에 따라 내 대답을 업데이트했습니다. –