우리는 최초로 API를 만들어 보았습니다. GET API를 만들기 위해 사용했던 어노테이션에 익숙하지 않다면
자바어노테이션
에 대해서 몇 가지 블로그 글을 찾아보세요! 다음 질문을 생각하며 공부해보면 좋습니다! 😊
[질문]
어노테이션
을 사용하는 이유 (효과) 는 무엇일까?- 나만의
어노테이션
은 어떻게 만들 수 있을까?
어노테이션
어노테이션은 다른 프로그램에게 유용한 정보를 제공하기 위해 사용되는 것으로, 주석
과 같은 의미를 가진다.
어노테이션은 @
를 사용하여 작성자에게 해당 타겟에 대한 동작을 수행하는 프로그램 외에는 다른 프로그램에 영향을 주지 않는다.
어노테이션을 사용하는 이유
안전성
을 증가시킨다.비지니스 로직
에 더 집중할 수 있게 만들어 준다.어노테이션
이 지정된 대상에 대해 특정 작업을 수행하도록 할 수 있다.public @interface Calculator{ // 인터페이스의 앞에 @를 붙인다.
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
// 메타 어노테이션을 통해 유지되는 범위와 사용되는 범위를 지정할 수 있다.
public @interface Calculator{
}
메타 어노테이션이란?
- 다른
@어노테이션
에도 사용되는어노테이션
을 말하며, 주로커스텀 어노테이션
을 만들때 사용된다.
@Target
어노테이션의 적용 대상ElementType | 범위 |
---|---|
TYPE | 클래스 , 인터페이스 , Enum |
FIELD | 필드 ( 멤버 변수, Enum 상수 ) |
METHOD | 메서드 |
PARAMETER | parameter(매개변수) |
CONSTRUCTOR | 생성자 |
LOCAL_VARIABLE | 로컬 변수 |
ANNOTATION_TYPE | 어노테이션 |
PACKAGE | 패키지 |
@Retention
어노테이션이 유지정책RetentionPolicy | |
---|---|
SOURCE | 클래스 파일이 되기 이전 |
CLASS | 런타임이 전까지 |
RUNTIME | 실행 시 |
@Doucumented
해당 어노테이션을 javadoc에 포함시킨다.위에서 만든 커스텀 어노테이션으로 간단한 계산기를 만들어 보았다.
switch (cal) {
case "ADD": //cal이 ADD 일 경우
System.out.println("덧셈 : " + (num1 + num2));
break;
case "SUB": //cal이 SUB 일 경우
System.out.println("뺄셈 : " + (num1 - num2));
break;
case "MUL": //cal이 MUL 일 경우
System.out.println("곱셈 : " + (num1 * num2));
break;
case "DIV": //cal이 DIV 일 경우
System.out.println("나눗셈 : " + (num1 / num2));
break;
default:
System.out.println("오류");
break;
}
스캐너로 받은 값을 DTO에 담아서 Processor로 전달