53장. 주석 Inheritance
초록
JAX-RS 주석은 주석이 있는 인터페이스를 구현하는 하위 클래스 및 클래스로 상속할 수 있습니다. 상속 메커니즘을 사용하면 하위 클래스와 구현 클래스가 부모로부터 상속된 주석을 재정의할 수 있습니다.
53.1. 개요
상속은 개발자가 특정 요구 사항을 충족하기 위해 특화될 수 있는 제네릭 개체를 만들 수 있기 때문에 Java에서 더 강력한 메커니즘 중 하나입니다. JAX-RS는 클래스를 매핑하는 데 사용되는 주석을 수퍼 클래스에서 상속하도록 허용하여 이 전원을 유지합니다.
JAX-RS 주석 상속은 인터페이스를 지원하기 위해 확장됩니다. 구현 클래스는 구현되는 인터페이스에서 사용되는 JAX-RS 주석을 상속합니다.
JAX-RS 상속 규칙은 상속된 주석을 재정의하는 메커니즘을 제공합니다. 그러나 super 클래스 또는 인터페이스에서 해당 주석을 상속하는 구문에서 JAX-RS 주석을 완전히 제거할 수는 없습니다.
53.2. 상속 규칙
리소스 클래스는 구현하는 인터페이스에서 JAX-RS 주석을 상속합니다. 리소스 클래스는 확장하는 모든 슈퍼 클래스에서 JAX-RS 주석도 상속합니다. 슈퍼 클래스에서 상속된 주석은 am 인터페이스에서 상속된 주석보다 우선합니다.
예 53.1. “주석 상속” 에 표시된 코드 샘플에서 Kaijin
클래스의 getMonster()
메서드는 Kaiju 인터페이스에서 @Path
,@GET
및 @PathParam
주석을 상속합니다.
예 53.1. 주석 상속
public interface Kaiju { @GET @Path("/{id}") public Monster getMonster(@PathParam("id") int id); ... } @Path("/kaijin") public class Kaijin implements Kaiju { public Monster getMonster(int id) { ... } ... }
53.3. 상속된 주석 덮어쓰기
상속된 주석을 재정의하는 것은 새 주석을 제공하는 것만큼 쉽습니다. 하위 클래스 또는 구현 클래스에서 메서드에 대한 자체 JAX-RS 주석을 제공하는 경우 해당 메서드에 대한 모든 JAX-RS 주석은 무시됩니다.
예 53.2. “주석 상속 덮어쓰기” 에 표시된 코드 샘플에서 Kaijin
클래스의 getMonster()
메서드는 Kaiju 인터페이스에서 주석을 상속하지 않습니다. 구현 클래스는 @inspector 주석
을 재정의하여 인터페이스의 모든 주석이 무시됩니다.
예 53.2. 주석 상속 덮어쓰기
public interface Kaiju { @GET @Path("/{id}") @Produces("text/xml"); public Monster getMonster(@PathParam("id") int id); ... } @Path("/kaijin") public class Kaijin implements Kaiju { @GET @Path("/{id}") @Produces("application/octect-stream"); public Monster getMonster(@PathParam("id") int id) { ... } ... }