[WarmingUp 01] Annotation

밍디·2024년 4월 29일

WarmingUp

목록 보기
1/7
post-thumbnail

[질문]

  • 어노테이션을 사용하는 이유 (효과) 는 무엇일까?
  • 나만의 어노테이션은 어떻게 만들 수 있을까?

스프링을 쓰면서 Annotation을 정말 많이 사용했는데 왜 사용하는지에 대한 의문을 가져본 적이 없다. 왜 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(); // 반드시 명시해야 함
}

단점도 있지 않을까?

  1. 복잡성 증가:
    과도한 사용은 코드의 가독성을 떨어뜨리고 복잡성을 증가시킬 수 있다.
  2. 의존성 증가
    특히 스프링은 자체 제공하는 어노테이션이 있는 만큼 프레임워크에 종속적이다.
  3. 컴파일 시간의 오버헤드
    컴파일시 오버헤드를 발생할 수 있다. 프로젝트가 커지고 복잡해질수록 어노테이션 처리에 소요되는 시간이 증가한다.

0개의 댓글