개발 언어/자바 java

[자바] 어노테이션 이란? (사용법, 커스텀,왜 사용하나?)

삐뚤어진 개발자 2020. 8. 20.

어노테이션 뜻/사용법/커스텀 

자바에서 어노테이션이라는 단어를 많이 들어보셨을 겁니다. 안드로이드, 스프링 부트 등 자바를 사용하는 프레임 워크나 플랫폼에서 많이 사용됩니다.

 

자바의 어노테이션의 개념과 사용법 및 커스텀 어노테이션을 알아보겠습니다.

 

어노테이션 이란? 뜻? 왜쓰는가?

 

아래와 같이 @로 시작하는 것을 어노테이션이라고 합니다.

참고로 어노테이션은 jdk 1.5 버전 이상에서 부터 사용가능합니다.

@override

 

어노테이션은 메타 데이터로 볼수 있으며, 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동합니다. 설명이 좀 어렵습니다. 

 

간단히 말하자면 응용 단계에서 계층이 아니라 컴파일러 쪽이라고 생각하시면 되겠습니다. 어노테이션을 커스텀하여 추가한다면, 컴파일러에 정보를 추가하는 것으로 이해하시면 쉬울 것입니다.

 

어노테이션 기능

- 컴파일러에 코드 문법 에러를 체크하도록 정보 제공

- 개발 툴에서 코드를 자동으로 생성할 수 있는지 정보 제공

- 실행 시 특정 기능을 실행하도록 정보 제공

 

왜? 사용하나

어노테이션을 번역하면 '주석' 입니다. 코드에 부가적인 설명을 달아 놓는 것 입니다. 

다른 코드에서 읽을 수 있기 때문에  반복적으로 처리해야하는 일들을 자동화가 가능합니다.

 

 

 

어노테이션 사용법 / 만들기

어노테이션은 사용하시는 툴들에서 만들어도 되고, 클래스 파일에 아래와 같은 문법으로 만들수 있습니다.

public @interface TestAnnotaion { 
  String value();
}

 

그리고 사용은 아래와 같이 하면 되는 것이다.

@TestAnnotation("Test")
public String test(){
return "test_test";
}

 

 

어노테이션 예시

스프링 부트에서 많이 사용하는 어노테이션 중에 하나인 @PostMapping을 가져왔습니다.

우리는 이 어노테이션으로 도메인 경로를 지정하여 값을 전달합니다.

 @PostMapping("/")
    public String main_cls(
    retrun "main";
    )

 

 

@PostMapping 어노테이션은 아래와 같이 생겼습니다.

public @interface PostMapping {
    @AliasFor(
        annotation = RequestMapping.class
    )
    String name() default "";

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] value() default {};

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] path() default {};

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] params() default {};

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] headers() default {};

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] consumes() default {};

    @AliasFor(
        annotation = RequestMapping.class
    )
    String[] produces() default {};
}

 

 

 

 

긴글 읽어 주셔서 감사합니다.

더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.

 

 

댓글