[스터디할래] whitesheep #12 어노테이션

애노테이션의 정의


자바의 정석에 따르면 아래와 같은 정의를 따른다

  • 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공

애노테이션은 본래 주석에서 유래한 것이라고 한다..

그러나 나는 저 정의에 대해 의구심을 품은다 왜냐하면 @Autowired@Setter 처럼 실행 시점에

실제로 값을 주입하기에 소스 코드 작성시에는 영향이 없지만 실행시점에는 영향이 있기 때문이다

메타 애너테이션


  • 애너테이션을 만드는데 사용하는 애너테이션
애너테이션설명
@Target애너테이션을 지정할 대상의 종류를 지정
@Retention애너테이션이 유지되는 범위
@Documentated애너테이션 정보가 javadoc으로 작성된 범위에 포함되도록 설정
@Inherited애너테이션이 자손 클래스에 상속되도록 지정
@Repeatable애너테이션을 반복해서 적용할 수 있게 정의 (since 1.8~)
  • @Target

    • TYPE : 클래스
    • FILED, METHOD 등…
  • @Retention

    • SOURCE
      • 컴파일 후 .class 생성시 애너테이션 정보는 사라진다
        • 예를들어 @Override 같은 메서드는 코드를 작성할 때만 필요
    • CLASS
      • 기본값이지만 거의 사용하지 않음
    • RUNTIME
      • 리플렉션을 사용해서 어떤 처리를 할 것이라면 이것을 사용해야 한다

value

애너테이션 내 value 속성은 생략이 가능하다 !

서비스 로더


서비스 로더를 통해서 애너테이션의 처리부를 구현할 수 있다




© 2020.12. by 따라쟁이

Powered by philz