ConstructorProperties
ConstructorProperties (생성자 매개변수 매핑 애너테이션)
생성자에 붙이는 애너테이션으로, 해당 생성자의 매개변수가 생성된 객체의 getter 메서드와 어떻게 대응하는지를 보여 줘요. 예를 들어 다음처럼 사용할 수 있어요.
public class Point {
@ConstructorProperties({"x", "y"})
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public int getY() { return y; }
private final int x, y;
}
본문
위 예제에서 애너테이션은 생성자의 첫 번째 매개변수를 getX() 메서드로 얻을 수 있고, 두 번째 매개변수를 getY() 메서드로 얻을 수 있음을 보여 줘요.
매개변수 이름은 일반적으로 런타임에 사용할 수 없기 때문에, 이 애너테이션이 없으면 매개변수가 getX()/getY()에 대응하는지 아니면 반대로 대응하는지 알 방법이 없어요. 이 애너테이션은 매핑 정보를 명시적으로 제공해 이런 모호함을 해결해요.
이 애너테이션은 생성자에 붙는 애너테이션(@Target(CONSTRUCTOR))이고 실행 시점에 유지되며(@Retention(RUNTIME)) 문서화됩니다(@Documented).
다음과 같은 멤버를 가져요.
String[] value
value— 생성자 매개변수의 이름 배열이에요. 각 이름은 해당 매개변수에 대응하는 getter/접근 메서드를 나타내요.
빈 인스턴스화와 직렬화 과정에서 생성자의 매개변수 이름과 getter를 연결하는 데 사용돼요.