[JAVA] 어노테이션

haram·2023년 5월 30일
0

어노테이션이란?

  • 프로그램에게 코드에 대한 정보를 전달하기 위한 메타데이터
  • 사람에게는 주석을 이용하여 정보를 전달한다면, 프로그램에게는 어노테이션을 이용하여 정보를 전달한다
  • 컴파일 또는 런타임시 코드를 어떻게 컴파일하고 처리 할 것인지 알려주는 정보

어노테이션의 사용이유?

어노테이션이 아래 기능을 수행하는 것이 아닌 어노테이션과 리플렉션을 이용하여 수행

  • 컴파일시에 코드문법 체크 ex) @override
  • 빌드시 코드를 자동으로 생성 ex) lombok라이브러리의 @getter, @setter
  • 런타임시에 특정기능 수행 ex) Spring 프레임워크의 @Component, @Controller등등

리플렉션이란?

클래스의 구체적인 타입을 알지 못해도 그 클래스의 정보(타입, 메소드, 변수, 어노테이션 등)에 접근할 수 있도록 해주는 API

  • 자바의 Class클래스를 이용하여 리플렉션 기능을 이용가능
  • 예를들어 Spring에서 @Component가 붙은 클래스를 Bean으로 등록 하는 경우 어느 클래스에 @Component 어노테이션이 붙어 있는지 알지 못한다. 따라서 모든 클래스를 리플렉션을 이용하여 Scan후에 해당 어노테이션이 붙은 클래스만 bean으로 등록 가능하다

Spring의 @Component 구현

  • @Component가 붙은 클래스를 bean으로 등록 해야한다. 하지만 어느 클래스에 @Component가 붙어 있는지는 바로 알 수 없다. 따라서 리플렉션(Class객체)을 이용하여 모든 클래스를 scan(for문과 if문)하면서 @Component가 붙은 클래스에 한해 bean객체를 생성하고 컨테이너에 저장한다.

0개의 댓글