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;
}

출처: Java API Reference

본문

위 예제에서 애너테이션은 생성자의 첫 번째 매개변수를 getX() 메서드로 얻을 수 있고, 두 번째 매개변수를 getY() 메서드로 얻을 수 있음을 보여 줘요.

매개변수 이름은 일반적으로 런타임에 사용할 수 없기 때문에, 이 애너테이션이 없으면 매개변수가 getX()/getY()에 대응하는지 아니면 반대로 대응하는지 알 방법이 없어요. 이 애너테이션은 매핑 정보를 명시적으로 제공해 이런 모호함을 해결해요.

이 애너테이션은 생성자에 붙는 애너테이션(@Target(CONSTRUCTOR))이고 실행 시점에 유지되며(@Retention(RUNTIME)) 문서화됩니다(@Documented).

다음과 같은 멤버를 가져요.

String[] value
  • value — 생성자 매개변수의 이름 배열이에요. 각 이름은 해당 매개변수에 대응하는 getter/접근 메서드를 나타내요.

빈 인스턴스화와 직렬화 과정에서 생성자의 매개변수 이름과 getter를 연결하는 데 사용돼요.

더 알아보기 (Learn more)

Java 공식 API