[질문]
스프링을 쓰면서 Annotation을 정말 많이 사용했는데 왜 사용하는지에 대한 의문을 가져본 적이 없다. 왜 Annotation을 사용하는 걸까?
네이버: 주석
위키백과: 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터
1. 간결성과 가독성
어노테이션을 사용하면 간결하고 가독성이 높은 코드를 작성할 수 있다. XML 로 빈을 주입할 때와 비교해보자.
XML
<bean id="person" class="Person">
<property name="name" value="mindy" />
</bean>
@
@Bean
public Person person() {
Person person = new Person();
person.setName("mindy")
return person;
}
가독성이 높아지고 유지보수가 용이하다.
2. 유연성과 확장성
어노테이션은 코드에 주석처럼 달려 특수한 기능을 수행한다. 특수한 기능들을 필요에 따라 조합, 생성, 커스터마이징할 수 있다. 또한 설정 정보에 변경이 생겨도 코드를 수정할 필요가 없다. 유지보수 굿.
근데 자유로운 커스터마이징이 단점이 될 수도 있지 않을까?
3.자동화
컴파일, 런타임에 자동으로 작업을 수행할 수 있다. ex) @Transactional: 트랜잭션 처리를 추가
@Retention(RetentionPolicy.RUNTIME) // 어노테이션이 유지되는 기간(런타임 시에도 정보 유지)
@Target(ElementType.METHOD) // 어노테이션이 적용될 대상(메서드에만 적용)
public @interface MyAnnotation {
String greet() default "하하이하이"; // 기본값을 가짐
int count(); // 반드시 명시해야 함
}