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