키보드워리어

[Spring] @Target에 대해서 알아보자. 본문

Spring framework

[Spring] @Target에 대해서 알아보자.

꽉 쥔 주먹속에 안경닦이 2023. 6. 14. 13:55
728x90

안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다.

 

오늘은 @Target 어노테이션에 대해 살펴보려고 합니다.


 

@Target

 
@Target은 어떤 역할을 하는 어노테이션일까요?


바로 커스텀 어노테이션을 정의할 때 해당 어노테이션이 적용될 수 있는 대상을 지정하는데 사용됩니다.

 

예를들어 아래와 같은 코드가 있다고 한다면,

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginUserAuthorize {
}

 

위의 코드에서 @Target(ElementType.PARAMETER)는

@LoginUserAuthorize 어노테이션이 파라미터에 적용될 수 있음을 나타냅니다.

 

따라서 @LoginUserAuthorize어노테이션은 메서드 레벨에서도 사용할 수 있고, 클래스 레벨에서도 사용할 수 있습니다.

 

실제 사용한 코드를 한 번 볼까요?

 

public String delete(@PathVariable Long boardId, @LoginUserAuthorize Member loginUser) {
//비즈니스로직
}

이 코드의 핵심은 @LoginUserAuthorize 어노테이션을 통해 로그인 권한을 가진 사용자만 해당 메서드에 접근할 수 있도록 제한하고, 게시글 삭제에 대한 권한 검사를 수행한다는 점이죠. @Target을 지정했으니 가능합니다. 

 

 

@Target 종류 

 

Target으로 지정할 수 있는 타입은 다음과 같아요.

METHOD: 메서드에 어노테이션을 적용할 수 있습니다. 메서드 수준에서의 어노테이션은 해당 메서드의 동작에 영향을 미칠 수 있습니다.

TYPE: 클래스, 인터페이스, 열거형 등의 타입에 어노테이션을 적용할 수 있습니다. 클래스 수준에서의 어노테이션은 해당 타입의 모든 멤버와 인스턴스에 영향을 미칠 수 있습니다.

PARAMETER: 메서드나 생성자의 매개변수에 어노테이션을 적용할 수 있습니다. 매개변수 수준에서의 어노테이션은 해당 매개변수의 사용 방식이나 처리 방법을 설정할 수 있습니다.

ANNOTATION_TYPE: 다른 어노테이션에 어노테이션을 적용할 수 있습니다. 즉, 어노테이션을 구성하는 요소에 어노테이션을 부여할 수 있습니다.

 

728x90