Java의 어노테이션은 크게 Built-in Annotation과 Meta Annotation이 존재한다.
회원과 비회원을 구분 지어 서비스를 제공해야 한다고 가정하자. 비회원에게도 제공되는 서비스가 존재할 것이다.
단순하게 회원전용 API와 비회원 전용 API를 구분 지어도 되지만 Custom Annotation을 생성한다면 더 간단히 해결할 수 있다.
※ Custom Annotation 주의 사항
어노테이션 추가가 당장의 작업 속도를 끌어올릴 순 있지만 어노테이션의 의도는 숨어있기 때문에 내부적으로 어떤 동작을 하게 되는지 명확하지 않다면 로직 플로우를 이해하기 어렵게 된다.
하지만 적재적소에 사용된다면 불필요한 반복코드가 줄고 개발자는 비즈니스 로직에 더 집중할 수 있도록 만들어준다.
무분별한 추가는 지양하고 추가하기 전에 구성원 간의 이해와 공감대가 선행되어야 한다.
public @interface PreviewAvailable {
}
어노테이션은 인터페이스 앞에 @를 붙여서 생성할 수 있다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PreviewAvailable {
}
@RestController
@RequestMapping("devlog")
public class TestController {
@GetMapping("/member")
public String member () {
Method method = new Object(){}.getClass().getEnclosingMethod();
String value = memberCheck(method);
return value;
}
@PreviewAvailable
@GetMapping("/visitor")
public String visitor () {
Method method = new Object(){}.getClass().getEnclosingMethod();
String value = memberCheck(method);
return value;
}
private String memberCheck(Method method) {
String value = "";
if(method.isAnnotationPresent(PreviewAvailable.class)) {
value = "비회원";
}else {
value = "회원";
}
return value;
}
}
devlog/visitor API에 Custom Annotation을 적용하였다. AOP를 활용하면 효과적으로 Custom Annotation을 사용할 수 있을 것이다.
@PreviewAvailable Annotation을 적용함으로써 비회원에게도 제공되는 API를 구분 지어 사용하지 않아도 된다.
비회원에게도 제공될 API에 @PreviewAvailable을 적용하기만 하면 된다.
(AOP를 사용하여 @PreviewAvailable 유뮤를 체크하도록 한다)
[JAVA] 대용량 데이터 조회 - ResultHandler (3) | 2023.10.15 |
---|---|
[JAVA] 접근제어자 및 Protected에 대한 고찰 (15) | 2023.03.14 |
[JAVA] Calendar (날짜와 시간) 내일, 월말, 월초, 년말, 년초, 윤년 구하기 (4) | 2023.02.19 |
[JAVA] File Object 기본 사용법 (9) | 2023.02.18 |
JAVA 업캐스팅, 다운캐스팅, instanceof 연산자 (0) | 2022.10.17 |
댓글 영역