[Java] Annotation 이란? ( 애노테이션 )

2024. 11. 5. 01:00·공부/☕Java

(1) Annotation(애노테이션) 이란?

1. Annotation 이란?

- 번역기를 통해 변역을 해보면 Annotation은 "주석"이라는 의미를 뜻한다.

 

2. Java 에서 Annotation이란?

- Java에서 Annotation은 메타데이터를 코드에 추가하기 위한 방법으로 쓰인다.

- 애너테이션은 클래스, 메서드, 변수, 매개변수 등 다양한 요소에 대한 추가적인 정보를 제공하며, 이러한 정보를 컴파일러나 런타임 환경에서 활용할 수 있도록 하기 위해 사용이 된다.

 

3. 메타데이터란?

- 코드에 부가적인 정보를 제공해주는 데이터를 메타데이터 라고 한다.

- 코드에 부가적인 정보를 제공하기 위해선 애너테이션을 붙히게 되는데 애너테이션이 즉, 메타데이터이다.

예시를 들면, 도서관의 책이 있고, 해당 책은 데이터라고 볼 수 있으며, 책을 찾거나 분류하기 위한 책 제목, 저자, 출판년도 같은 정보들을 책의 메타데이터 라고 할 수 있다.

 

(2) Java Annotation 장점

1. 코드 가독성 향상

- 애노테이션을 사용하면 코드의 목적과 사용법을 명확하게 표현 할 수 있게 된다.

- 애노테이션은 코드에 추가적인 설명을 제공하기 때문에, 해당 코드가 하는 역할이나 의미를 명확하게 알 수 있다.

- 이를 통해 코드의 가독성이 향상되고, 다른 개발자가 코드를 이해하는 데 도움이 된다.

@RestController // 컨트롤러 컴포넌트임을 나타낸다.
public class UserController {

    private final UserService userService;
    
    @Autowired // Autowired 뜻은 -> 자동 연결 = 의존성 주입을 나타낸다.
    public UserController(UserService userService) {
        this.userService = userService;
    }
}

2. 메타데이터 활용

- 애노테이션을 통해 추가 정보를 제공하게 되면, 이를 런타임 또는 컴파일 시에 처리할 수 있습니다.

- 즉, 메타데이터인 애너테이션을 활용해 기능이 존재하는 애너테이션으로 이용할 수 있다.

public class Service {
    
    @Deprecated // 이 메소드는 더 이상 사용되지 않음을 나타내는 애너테이션
    public void oldMethod() {
        System.out.println("더 이상 지원 안하는 메서드");
    }
    
    public void newMethod() {
        System.out.println("새로 만들었으니 이 메서드 이용해주세요.");
    }
}

public class Main {
    public static void main(String[] args) {
        Service service = new Service();

        service.oldMethod(); // 컴파일에 경고가 표시됨
        service.newMethod(); // 정상 동작
    }
}

코드 예제처럼 메타데이터인 애너테이션을 붙힘으로써, IDE에 경고가 표시가 된다. 이 처럼 기능이 존재하는 애너테이션으로 이용을 할 수 있게 된다.

 

3. 프레임워크와의 통합

Spring Framework 를 기반으로 만들어진 SpringBoot는 XML 설정을 사용하지 않고, 애너테이션을 통해 대부분의 설정을 자동으로 처리를 하고 있다. ( 기존에는 XML 파일을 I/O로 읽어들여 빈을 구성을 했어야 했다. )

- XML 파일을 작성하지 않아도 되므로 설정이 훨씬 간편해 졌다.

- 클래스와 의존성 주입을 한눈에 파악을 할 수 있어, 유지보수와 수정 작업이 용이해졌다.

- XML 파일 I/O로 읽는 과정의 생략을 통해 애플리케이션의 시작 속도 개선

 

4. 코드 재사용성 증가

- 애노테이션을 통해 여러 메서드나 클래스에 공통된 동작을 부여할 수 있어 코드 재사용성을 높일 수 있습니다.

ex) AOP , @Transactional

- Deprecated 애너테이션을 예시로 들면, 하나의 Deprecated 애너테이션을 통해 더 이상 사용하지 않는 여러 메서드에 공통적인 기능으로 붙힐 수 있기 때문에 코드 재사용성이 증가한다.

- 트랜잭션을 처리해주는 애너테이션 또한, 하나의 기능을 여러 메서드에서 사용이 가능하게 할 수 있다.

 

5. 유지보수 용이

- 애노테이션을 사용하면 코드의 의도를 명확히 표현할 수 있어, 이후 코드 수정 및 유지보수가 쉬워진다.

- 특정 기능이나 규칙을 애노테이션으로 정의하면, 이를 따르는 모든 메서드나 필드를 쉽게 찾아 수정할 수 있다.

- JUnit에서 @Test 애너테이션을 사용하여 테스트 메서드를 표시할 수 있으며, 이를 통해 테스트 케이스를 쉽게 관리하고 실행할 수 있게된다. 이를 통해 유지보수가 좋아진다.

'공부 > ☕Java' 카테고리의 다른 글

[Java Design Pattern] 정적 팩토리 메서드  (0) 2024.11.10
[Java] 변수 초기화에 대한 이해  (2) 2024.11.05
[Java] JVM 동작 원리  (2) 2024.10.23
[Java] 클래스와 객체의 정의  (9) 2024.10.05
[Java] 상속 ( Extends )  (6) 2024.05.01
'공부/☕Java' 카테고리의 다른 글
  • [Java Design Pattern] 정적 팩토리 메서드
  • [Java] 변수 초기화에 대한 이해
  • [Java] JVM 동작 원리
  • [Java] 클래스와 객체의 정의
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    자료구조
    방송대
    운영체제
    컴퓨터과학과
    방송통신대학교
    파이썬
    C언어
    그래프
    배열
    Python
    함수
    이산수학
    유비쿼터스
    컴퓨터의 이해
    Java
    자바
    알고리즘
    spring
    컴퓨터과학 개론
    방통대
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[Java] Annotation 이란? ( 애노테이션 )
상단으로

티스토리툴바