Sling 어댑터 사용 using-sling-adapters
슬링 이(가) 다음을 제공합니다 어댑터 패턴 를 구현하는 개체를 편리하게 번역하려면 적응성 인터페이스. 이 인터페이스는 제네릭을 제공합니다 adaptTo() 개체를 인수로 전달되는 클래스 형식으로 변환하는 메서드입니다.
예를 들어 리소스 객체를 해당 노드 객체로 변환하려면 다음과 같이 하면 됩니다.
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
. -
둘의 조합.
첫 번째 경우 Java™ 문서에는 adaptTo-targets
가능합니다. 그러나 JCR 기반 리소스와 같은 특정 하위 클래스의 경우 이러한 작업이 불가능한 경우가 많습니다. 후자의 경우 AdapterFactory
는 일반적으로 번들의 전용 클래스의 일부이므로 클라이언트 API에 노출되지 않으며 Java™ 문서에 나열되지 않습니다. 이론적으로 모든 것에 접근하는 것은 가능할 것이다 AdapterFactory
의 구현 OSGi 서비스 런타임에서 "적응성"(소스 및 타겟) 구성을 확인하지만 서로 매핑하지는 않습니다. 결국 이는 내부 논리에 따라 달라지는데 이를 반드시 문서화해야 한다. 따라서 이 참조입니다.
참조 reference
슬링 sling
리소스 은 다음 항목에 적응합니다.
ResourceResolution 은 다음 항목에 적응합니다.
SlingHttpServletRequest 은 다음 항목에 적응합니다.
아직 대상이 없지만 는 적응성을 구현하며 사용자 지정 AdapterFactory에서 소스로 사용할 수 있습니다.
SlingHttpServletResponse 은 다음 항목에 적응합니다.
WCM wcm
페이지 은 다음 항목에 적응합니다.
구성 요소 은 다음 항목에 적응합니다.
템플릿 은 다음 항목에 적응합니다.
보안 security
승인 가능 대상, 사용자 및 그룹** 조정 대상:
DAM dam
자산 은 다음 항목에 적응합니다.
태그 지정 tagging
태그 은 다음 항목에 적응합니다.
기타 other
또한 Sling / JCR / OCM 은 [AdapterFactory](https://sling.apache.org/site/adapters.html#Adapters-AdapterFactory)
사용자 지정 OCM용(오브젝트 콘텐츠 매핑) 개체.