Sling 어댑터 사용 using-sling-adapters
Sling 오퍼 어댑터 패턴 구현된 객체를 간편하게 번역하려면 적응성 인터페이스. 이 인터페이스는 일반 을 제공합니다 adaptTo() 개체를 인수로 전달되는 클래스 형식으로 변환하는 메서드입니다.
예를 들어 Resource 개체를 해당 Node 개체로 변환하려면 다음을 간단히 수행할 수 있습니다.
Node node = resource.adaptTo(Node.class);
사용 사례 use-cases
다음과 같은 사용 사례가 있습니다.
-
구현별 개체를 가져옵니다.
예를 들어, 제네릭의 JCR 기반 구현
Resource
인터페이스는 기본 JCR에 대한 액세스 권한을 제공합니다.Node
. -
내부 컨텍스트 개체를 전달해야 하는 개체의 바로 가기 만들기
예를 들어 JCR 기반
ResourceResolver
요청의JCR Session
과 같이 해당 요청 세션을 기반으로 작동하는 많은 개체에 대해 이 작업이 필요합니다.PageManager
또는UserManager
. -
서비스에 대한 바로 가기.
드문 사례 -
sling.getService()
간단합니다.
Null 반환 값 null-return-value
adaptTo()
null을 반환할 수 있습니다.
다음과 같은 여러 가지 이유가 있습니다.
- 구현은 target 유형을 지원하지 않습니다
- 이 케이스를 처리하는 어댑터 팩터리가 활성 상태가 아닙니다(예: 서비스 참조가 누락되어)
- 내부 조건이 실패했습니다.
- 서비스를 사용할 수 없습니다.
null 케이스를 적절하게 처리하는 것이 중요합니다. jsp 렌더링의 경우 컨텐츠가 비어 있는 경우 jsp에 오류가 발생할 수 있습니다.
캐싱 caching
성능을 개선하기 위해 구현은 자유롭게 obj.adaptTo()
호출. 만약 obj
는 동일하고 반환된 개체는 동일합니다.
이 캐싱은 모든 경우에 수행됩니다 AdapterFactory
기반 사례.
그러나 일반 규칙이 없습니다. 개체가 새 인스턴스이거나 기존 인스턴스일 수 있습니다. 즉, 두 동작에 의존할 수 없습니다. 따라서 그것은 특히 내부에서 중요합니다 AdapterFactory
로 설정되면 이 시나리오에서는 해당 개체를 다시 사용할 수 있습니다.
작동 방법 how-it-works
다음과 같은 다양한 방법이 있습니다 Adaptable.adaptTo()
를 구현할 수 있습니다.
-
개체 자체에 의해; 메서드 자체를 구현하고 특정 객체에 매핑합니다.
-
기준
AdapterFactory
- 임의의 개체를 매핑할 수 있습니다.개체는 여전히
Adaptable
인터페이스 및 확장 필요SlingAdaptable
(이adaptTo
중앙 어댑터 관리자 호출).후크를 사용하여
adaptTo
기존 클래스의 메커니즘(예:Resource
. -
둘 다 조합입니다.
첫 번째 경우 javadocs에 adaptTo-targets
가능합니다. 그러나 JCR 기반 리소스와 같은 특정 하위 클래스의 경우 이 작업이 불가능한 경우가 많습니다. 후자의 경우 AdapterFactory
는 일반적으로 번들의 개인 클래스의 일부이며, 따라서 클라이언트 API에 노출되거나 javadocs에 나열되지 않습니다. 이론적으로, 모든 사람들이 AdapterFactory
구현에서 OSGi 서비스 런타임에서 해당 "adapttable"(소스 및 타겟) 구성을 확인하지만 서로 매핑하지 않습니다. 결국, 이것은 문서화되어야 하는 내부 논리에 따라 다릅니다. 따라서 이 참조는
참조 reference
슬링 sling
리소스 다음 사항에 맞게 조정:
ResourceResolver 다음 사항에 맞게 조정:
SlingHttpServletRequest 다음 사항에 맞게 조정:
대상이 아직 없지만 Adaptable을 구현하고 사용자 지정 AdapterFactory에서 소스로 사용할 수 있습니다.
SlingHttpServletResponse 다음 사항에 맞게 조정:
WCM wcm
페이지 다음 사항에 맞게 조정:
구성 요소 다음 사항에 맞게 조정:
템플릿 다음 사항에 맞게 조정:
보안 security
DAM dam
자산 다음 사항에 맞게 조정:
태그 지정 tagging
태그 다음 사항에 맞게 조정:
기타 other
또한 Sling / JCR / OCM 은 [AdapterFactory](https://sling.apache.org/site/adapters.html#Adapters-AdapterFactory)
사용자 지정 OCM(개체 콘텐츠 매핑) 내의 아무 곳에나 삽입할 수 있습니다.