45장. API 구성 요소 프레임워크 소개
초록
API 구성 요소 프레임워크는 대규모 Java API를 기반으로 복잡한 Camel 구성 요소를 구현하는 데 도움이 됩니다.
45.1. API 구성 요소 프레임워크란 무엇입니까?
45.1.1. 동기
옵션이 적은 구성 요소의 경우 구성 요소 구현에 대한 표준 접근 방식은 매우 효과적입니다.38장. 구성 요소 구현 그러나 문제가 되기 시작하는 위치는 많은 수의 옵션으로 구성 요소를 구현해야 하는 경우입니다. 이 문제는 엔터프라이즈급 구성 요소와 관련하여 급격하게 발생하므로 수백 개의 작업으로 구성된 API를 래핑해야 할 수 있습니다. 이러한 구성 요소는 생성 및 유지 관리를 위해 많은 노력이 필요합니다.
API 구성 요소 프레임워크는 이러한 구성 요소를 구현하는 문제를 처리하기 위해 정확하게 개발되었습니다.
45.1.2. API를 구성 요소로 전환
Java API를 기반으로 Camel 구성 요소를 구현하는 경험을 통해 많은 작업이 일상적이고 기계적임을 알 수 있습니다. 특정 Java 메서드를 가져와서 특정 URI 구문에 매핑하며 사용자가 URI 옵션을 통해 메서드 매개 변수를 설정할 수 있도록 하는 것으로 구성됩니다. 이러한 유형의 작업은 자동화 및 코드 생성에 대한 명확한 후보입니다.
45.1.3. 일반 URI 형식
Java API 구현을 자동화하는 첫 번째 단계는 API 메서드를 URI에 매핑하는 표준 방법을 설계하는 것입니다. 이를 위해 모든 Java API를 래핑하는 데 사용할 수 있는 일반 URI 형식을 정의해야 합니다. 따라서 API 구성 요소 프레임워크는 끝점 URI에 대해 다음 구문을 정의합니다.
scheme://endpoint-prefix/endpoint?Option1=Value1&...&OptionN=ValueN
스키마
는 구성 요소에서 정의한 기본 URI 체계입니다. endpoint-prefix
는 래핑된 Java API의 클래스 또는 인터페이스에 매핑되는 짧은 API 이름이며 엔드포인트
는 메서드 이름에 매핑되고 URI 옵션은 메서드 인수 이름에 매핑됩니다.
45.1.4. 단일 API 클래스의 URI 형식
API가 단일 Java 클래스로 구성된 경우 URI의 엔드포인트-접
두사 부분이 중복되고 다음과 같이 URI를 더 짧은 형식으로 지정할 수 있습니다.
scheme://endpoint?Option1=Value1&...&OptionN=ValueN
이 URI 형식을 활성화하려면 구성 요소 구현자가 API 구성 요소 Maven 플러그인 구성에 apiName
요소를 비워 둘 수도 있어야 합니다. 자세한 내용은 “API 매핑 구성” 섹션을 참조하십시오.
45.1.5. 리플렉션 및 메타데이터
Java 메서드 호출을 URI 구문에 매핑하려면 일부 형태의 반영 메커니즘이 필요합니다. 그러나 표준 Java 리플렉션 API는 주목할 만한 제한으로 어려움을 겪습니다: 메서드 인수 이름을 유지하지 않습니다. 의미 있는 URI 옵션 이름을 생성하기 위해 메서드 인수 이름이 필요하기 때문에 문제가 있습니다. 해결 방법은 다른 형식의 메타데이터를 Javadoc 또는 메서드 서명 파일로 제공하는 것입니다.
45.1.6. Javadoc
Javadoc은 메서드 인수 이름을 포함하여 전체 메서드 서명을 유지하기 때문에 API 구성 요소 프레임워크에 이상적인 형식의 메타데이터입니다. 또한 쉽게 생성( maven-javadoc-plugin
을 사용하여) 생성이 가능하며, 대부분의 경우 타사 라이브러리에서 이미 제공됩니다.
45.1.7. 메서드 서명 파일
어떤 이유로든 Javadoc을 사용할 수 없거나 적합하지 않은 경우 API 구성 요소 프레임워크는 메서드 서명 파일의 대체 소스도 지원합니다. 서명 파일은 Java 메서드 서명 목록으로 구성된 간단한 텍스트 파일입니다. Java 코드에서 복사 및 붙여넣기를 통해 이러한 파일을 수동으로 생성하는 것은 비교적 쉽습니다(및 결과 파일을 간단히 편집).
45.1.8. 프레임워크는 어떻게 구성됩니까?
구성 요소 개발자의 관점에서 API 구성 요소 프레임워크는 다음과 같이 다양한 요소로 구성됩니다.
- Maven archetype
-
camel-archetype-api-component
Maven archetype은 구성 요소 구현에 대한 스keleton 코드를 생성하는 데 사용됩니다. - Maven 플러그인
-
camel-api-component-maven-plugin
Maven 플러그인은 Java API와 끝점 URI 구문 간의 매핑을 구현하는 코드를 생성합니다. - 특수 기본 클래스
-
API 구성 요소 프레임워크의 프로그래밍 모델을 지원하기 위해 Apache Camel 코어는
org.apache.camel.util.component
패키지에 특수 API를 제공합니다. 그 외에도 이 API는 구성 요소, 엔드포인트, 소비자 및 생산자 클래스에 대한 특수 기본 클래스를 제공합니다.