인프런 워밍업 클럽 백엔드 - 첫 번쨰 과제

인프런 워밍업 클럽 백엔드 - 첫 번쨰 과제

[질문]

  • 어노테이션을 사용하는 이유 (효과) 는 무엇일까?

  • 나만의 어노테이션은 어떻게 만들 수 있을까?


어노테이션(Annotation)

어노테이션(Annotation)은 소스 코드에 메타데이터(metadata)를 추가하기 위한 방법으로, 클래스, 메서드, 필드 등의 코드 요소에 정보를 부여하는 특별한 형식의 마커(marker)나 태그(tag)입니다. 어노테이션은 주석(comment)처럼 코드의 설명을 추가하는 용도로도 사용할 수 있지만, 주로 런타임 동작이나 컴파일 시의 특별한 처리를 위해 사용됩니다.

 

어노테이션을 사용하는 이유

  1. 간결한 코드 작성
    어노테이션은 XML보다 더 간결하고 직관적인 코드를 작성할 수 있게 해주며, 공통적인 코드 패턴이나 설정을 재사용하여 코드의 중복을 줄일 수 있습니다.

  2. 가독성 향상
    어노테이션은 코드 내에 직접 주석 형태로 작성되므로, 설정 정보를 한눈에 파악할 수 있습니다. 이로 인해 코드의 가독성이 향상되고 설정이 직관적으로 이해됩니다.

  3. 개발 생산성 향상
    어노테이션을 사용하면 설정 파일을 따로 작성할 필요가 없어져서 개발 생산성이 향상됩니다.

  4. 유지보수 용이
    어노테이션은 코드와 함께 관리되므로, 설정 정보가 변경될 경우 해당 어노테이션만 수정하면 됩니다.

  5. 컴파일 시점 오류 검증
    어노테이션 프로세서를 사용하면 컴파일 시점에 오류를 발견할 수 있습니다. 잘못된 설정이나 부적절한 사용 시 컴파일러가 오류를 감지하여 런타임 오류를 방지할 수 있습니다.

  6. DI 및 AOP의 편리한 사용
    Spring은 DI와 AOP를 효과적으로 지원하는데, 어노테이션을 통해 이러한 기능들을 더 쉽게 사용할 수 있게 됩니다. 예를 들어, ‘@Autowired’, ‘@Component’, ‘@Aspect’ 등의 어노테이션을 사용하여 의존성 주입 및 관점 지향 프로그래밍을 쉽게 적용할 수 있습니다.

  7. 메타데이터 포함
    어노테이션은 클래스, 메소드, 필드 등에 메타데이터를 직접 포함할 수 있습니다. 이는 리플렉션을 사용하여 런타임에 클래스의 정보를 쉽게 추출할 수 있도록 해줍니다.

 

나만의 어노테이션은 어떻게 만들 수 있을까?

사용자 정의 어노테이션을 만들기 위해서는 @interface 키워드를 이용하여 인터페이스를 정의할 수 있습니다.
다음은 사용자 정의 어노테이션을 만드는 간단한 예제입니다.

public @interface MyAnnotation {
    String value() default "";
}

위의 코드는 MyAnnotation이라는 이름의 어노테이션을 정의하고 있습니다. value()는 이 어노테이션의 멤버로, 기본값으로 빈 문자열을 가집니다.

이렇게 정의한 어노테이션은 다음과 같이 사용할 수 있습니다.

@MyAnnotation("Hello, World!")
public class MyClass {
    // ...
}

이 경우, MyClassMyAnnotation이라는 어노테이션을 가지며, 그 값으로 "Hello, World!"를 가집니다.

어노테이션 멤버의 타입은 기본형, String, Class, enum, annotation, 이들의 배열만 가능합니다. 또한, 어노테이션은 상속을 지원하지 않습니다.

어노테이션을 사용하면 코드에 메타데이터를 추가할 수 있어, 코드의 가독성을 높이고, 특정 기능을 쉽게 구현할 수 있습니다.

 

[출처]
[Java]어노테이션(Annotation) 개념 및 사용법|로그
https://blog.naver.com/PostView.naver?blogId=seek316&logNo=223326750861|seek316

댓글을 작성해보세요.

채널톡 아이콘