어노테이션이란 무엇인가? Lombok을 이용해본 사람들은 @Setter, @Getter를 많이 보았을 것이다. 이런 것을 어노테이션이라 하며 한국어로 직역하면 주석이라고 한다. 주석이 특정 대상에 대한 추가 정보를 제공하는 것 처럼 Annotation도 java에서 정보를 보여주는 역할을 하기도 하며 이뿐만 아니라 특정 기능을 제공해주는 역할도 한다.
자바는 사용자가 다양한 Annotation을 작성할 수 있도록 한다. 커스텀 Annotation의 형식을 정의하면 다음과 같다.
@Target({ElementType.적용대상})
@Retention(RetentionPolicy.정보유지대상)
public @interface 어노테이션 이름 {
내용들
}
그럼 lombok에 정의된 @Setter를 직접 만들어 보며 설명해보겠다!
@Target({ElementType.적용대상})
@Retention(RetentionPolicy.정보유지대상)
public @interface MySetter {
//WIP//
}
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.정보유지대상)
public @interface MySetter {
//WIP//
}
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface MySetter {
//WIP//
}
만약 Annotation이 필드 값을 가지게 하고 싶다면 //WIP//가 들어간 곳에 다음과 같이 선언하면 된다.
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface mySetter {
String madeBy() default "HYUNKYUCHANG";//
}
이렇게 mySetter에 사용될 변수 madeBy를 정의하였다. Annotation에 정의 될 수 있는 변수는
Enumeration, String, Class, Primitive Value만 정의될 수 있다.
고럼 이제 해당 Annotation이 붙은 Field값에 Setter 함수를 추가해주는 로직을 추가해주면 된다.
다음에 올릴 글에는 해당 Annotation에 어떻게 로직을 붙이는지 알아보겠다.