인프런 커뮤니티 질문&답변

kamser님의 프로필 이미지
kamser

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

정리

반환값 옆에 붙는 어노테이션도 같은 건가요?

해결된 질문

작성

·

494

2

https://www.baeldung.com/spring-mvc-image-media-data

 

이거보면서 다시 복습하고 있었는데요

@RequestMapping(value = "/image-byte-array", method = RequestMethod.GET)
public @ResponseBody byte[] getImageAsByteArray() throws IOException {
    InputStream in = servletContext.getResourceAsStream("/WEB-INF/images/image-example.jpg");
    return IOUtils.toByteArray(in);
};
@RequestMapping(value = "/image-byte-array", method = RequestMethod.GET)
@ResponseBody
public byte[] getImageAsByteArrayV2() throws IOException {
    InputStream in = servletContext.getResourceAsStream("/WEB-INF/images/image-example.jpg");
    return IOUtils.toByteArray(in);
}

이렇게 반환타입 옆에 어노테이션이 붙어있더라구요

위랑 아래랑 같은 코드가 맞죠 ?

그런데 위 처럼 작성하는 이유가 있을까요 ?

답변 1

3

안녕하세요. yousd179님, 공식 서포터즈 OMG입니다.
.

어노테이션이 적용되는 위치는 다양합니다.

클래스에 적용할 수도, 메서드에도 (+그 외 다양한 위치에) 적용할 수 있습니다.

 

 

image@ResponseBody의 Target은 TYPE과 METHOD가 허용되기 때문에 메서드 영역과 클래스 영역에 선언이 될 수 있습니다. (올리신 코드 예시는 ElementType.METHOD로 인해 위치 허용이 되었습니다.)

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody {

}

 

올리신 코드에서 @ResponseBody위치로 인한 둘의 동작차이는 없을 것이고, 코딩 스타일 차이라 생각합니다.


.
감사합니다.

kamser님의 프로필 이미지
kamser
질문자

주말에도 상세한 답변 감사합니다 !!!

kamser님의 프로필 이미지
kamser

작성한 질문수

질문하기