(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] 변수 초기화에 대한 이해 (0) | 2024.11.05 |
---|---|
[Java] JVM 동작 원리 (0) | 2024.10.23 |
[Java] 클래스와 객체의 정의 (9) | 2024.10.05 |
[Java] 상속 ( Extends ) (1) | 2024.05.01 |
[Java] 예외 ( Exception ) (2) | 2024.04.26 |