Sling 어댑터 사용
- 주제:
- 개발
작성 대상:
- 관리자
- 개발자
Sling은(는) 적응성 인터페이스를 구현하는 개체를 편리하게 번역할 수 있는 어댑터 패턴을(를) 제공합니다. 이 인터페이스는 개체를 인수로 전달되는 클래스 형식으로 변환하는 일반 adaptTo() 메서드를 제공합니다.
예를 들어 리소스 객체를 해당 노드 객체로 변환하려면 다음과 같이 하면 됩니다.
Node node = resource.adaptTo(Node.class);
사용 사례
다음과 같은 사용 사례가 있습니다.
-
구현별 개체를 가져옵니다.
예를 들어 제네릭
Resource
인터페이스의 JCR 기반 구현은 기본 JCRNode
에 대한 액세스를 제공합니다. -
내부 컨텍스트 객체를 전달해야 하는 객체의 바로 가기 작성.
예를 들어 JCR 기반
ResourceResolver
은(는) 요청의JCR Session
에 대한 참조를 보유하며, 이는 해당 요청 세션을 기반으로 작동하는 많은 개체(예:PageManager
또는UserManager
)에 필요합니다. -
서비스 바로 가기.
드문 경우이지만
sling.getService()
도 간단합니다.
Null 반환 값
adaptTo()
은(는) null을 반환할 수 있습니다.
null 반환에는 다음을 포함하여 다양한 이유가 있습니다.
- 구현이 target 유형을 지원하지 않습니다.
- 이 사례를 처리하는 어댑터 팩토리가 활성화되지 않았습니다(예: 서비스 참조가 누락됨).
- 내부 조건 실패
- 서비스를 사용할 수 없음
null 케이스를 품위 있게 처리하는 것이 중요합니다. JSP 렌더링의 경우 빈 콘텐츠 조각이 발생하는 경우 JSP가 실패하도록 할 수 있습니다.
캐싱
성능을 향상시키기 위해 구현에서는 obj.adaptTo()
호출에서 반환된 개체를 캐싱할 수 있습니다. obj
이(가) 동일하면 반환된 개체가 동일합니다.
이 캐싱은 모든 AdapterFactory
기반 사례에 대해 수행됩니다.
그러나 일반 규칙은 없습니다. 객체는 새 인스턴스이거나 기존 인스턴스일 수 있습니다. 따라서 두 동작 중 하나에 의존할 수 없음을 의미합니다. 따라서 이 시나리오에서는 개체를 다시 사용할 수 있어야 합니다(특히 AdapterFactory
내부에서).
작동 방식
Adaptable.adaptTo()
을(를) 구현할 수 있는 방법에는 여러 가지가 있습니다.
-
객체 자체, 메소드 자체를 구현하고 특정 객체에 매핑.
-
임의의 개체를 매핑할 수 있는
AdapterFactory
까지개체는 여전히
Adaptable
인터페이스를 구현해야 하며SlingAdaptable
을(를) 확장해야 합니다(adaptTo
호출을 중앙 어댑터 관리자에 전달).이 메서드를 사용하면
Resource
과 같은 기존 클래스에 대해adaptTo
메커니즘에 후크를 연결할 수 있습니다. -
둘의 조합.
첫 번째 경우 Java™ 문서에는 adaptTo-targets
이(가) 가능한 내용이 표시될 수 있습니다. 그러나 JCR 기반 리소스와 같은 특정 하위 클래스의 경우 이 문이 불가능한 경우가 많습니다. 후자의 경우 AdapterFactory
의 구현은 일반적으로 번들의 전용 클래스에 속하므로 클라이언트 API에 노출되지 않으며 Java™ 문서에 나열되지 않습니다. 이론적으로 OSGi 서비스 런타임에서 모든 AdapterFactory
구현에 액세스하여 "적응성"(소스 및 타겟) 구성을 볼 수 있지만 서로 매핑하지는 않습니다. 결국 내부 논리에 따라 달라지는데, 이를 반드시 문서화해야 한다. 따라서 이 참조입니다.
참조
슬링
리소스 은(는) 다음 항목에 적응합니다.
노드 | JCR 노드 기반 리소스 또는 JCR 속성의 경우 노드 참조 |
속성 | JCR 속성 기반 리소스인 경우 |
항목 | JCR 기반 리소스(노드 또는 속성)인 경우 |
맵 | JCR 노드 기반 리소스(또는 다른 리소스 지원 값 맵)인 경우 속성 맵을 반환합니다. |
ValueMap | JCR 노드 기반 리소스(또는 다른 리소스 지원 값 맵)인 경우 사용하기 편리한 속성 맵을 반환합니다.ResourceUtil.getValueMap(Resource) 을(를) 사용하여(더 간단하게) 달성할 수도 있습니다(null 사례 등을 처리). |
상속 값 맵 | 속성을 찾을 때 리소스 계층 구조를 고려할 수 있도록 하는 ValueMap의 확장입니다. |
수정 가능한 값 맵 | 해당 노드의 속성을 수정할 수 있는 ValueMap의 확장입니다 |
입력 스트림 | 파일 리소스의 이진 콘텐츠를 반환합니다(JCR 노드 기반 리소스이고 노드 유형이 nt:file 또는 nt:resource 인 경우, 번들 리소스인 경우, 파일 시스템 리소스인 경우). 또는 이진 JCR 속성 리소스의 데이터를 반환합니다. |
URL | 리소스에 대한 URL 반환(JCR-node 기반 리소스인 경우 이 노드의 저장소 URL, 번들 리소스인 경우 jar 번들 URL, 파일 시스템 리소스인 경우 파일 URL) |
파일 | 파일 시스템 리소스인 경우 |
SlingScript | 리소스가 스크립트 엔진이 sling에 등록된 스크립트(예: jsp 파일)인 경우 |
서블릿 | 리소스가 스크립트 엔진이 sling에 등록된 스크립트(예: jsp 파일)이거나 서블릿 리소스인 경우 |
문자열 부울 긴 이중 달력 값 문자열[] 부울[] 긴[] 달력[] 값[] | JCR 속성 기반 리소스인 경우(값이 적절한 경우) 값을 반환합니다. |
LabeledResource | JCR 노드 기반 리소스인 경우 |
페이지 | JCR 노드 기반 리소스이고 노드가 cq:Page (또는 cq:PseudoPage )인 경우 |
구성 요소 | cq:Component 노드 리소스인 경우 |
디자인 | 디자인 노드(cq:Page )인 경우 |
템플릿 | cq:Template 노드 리소스인 경우 |
블루프린트 | cq:Template 노드 리소스인 경우 |
자산 | dam:Asset 노드 리소스인 경우 |
렌디션 | dam:Asset 렌디션(dam:Assert의 렌디션 폴더 아래에 있는 nt:file)인 경우 |
태그 | cq:Tag 노드 리소스인 경우 |
UserManager | JCR 기반 리소스이고 사용자가 UserManager에 액세스할 수 있는 권한이 있는 경우, JCR 세션에 따라 |
승인 가능 대상 | 승인 가능 대상은 사용자 및 그룹의 공통 기본 인터페이스입니다. |
사용자 | 사용자는 인증되고 가장될 수 있는 특별한 승인 가능 대상입니다. |
SimpleSearch | JCR 기반 리소스인 경우 리소스 아래에서 검색하거나 setSearchIn() 사용 |
WorkflowStatus | 지정된 페이지/워크플로 페이로드 노드의 워크플로 상태 |
ReplicationStatus | 지정된 리소스 또는 해당 jcr:content 하위 노드의 복제 상태(먼저 선택됨) |
ConnectorResource | JCR-노드 기반 리소스인 경우, 특정 유형에 대해 조정된 커넥터 리소스를 반환합니다. |
구성 | cq:ContentSyncConfig 노드 리소스인 경우 |
ConfigEntry | cq:ContentSyncConfig 노드 리소스 미만인 경우 |
ResourceResolver 은(는) 다음 항목에 적응합니다.
세션 | 요청의 JCR 세션(JCR 기반 리소스 확인자인 경우)(기본값) |
PageManager | |
구성 요소 관리자 | |
Designer | |
AssetManager | JCR 기반 리소스 확인자인 경우 JCR 세션 기반 |
TagManager | JCR 기반 리소스 확인자인 경우 JCR 세션 기반 |
UserManager | UserManager는 승인 가능한 객체(사용자 및 그룹)에 대한 액세스 권한과 유지 관리 수단을 제공합니다. UserManager는 특정 세션에 바인딩되어 있습니다 |
승인 가능 | 현재 사용자 |
사용자 | 현재 사용자 |
QueryBuilder | |
Externalizer | 절대 URL을 외부화하는 경우 요청 개체 이(가) 없어도 |
SlingHttpServletRequest 은(는) 다음 항목에 적용됩니다.
아직 대상이 없지만 는 적응성을 구현하며 사용자 지정 AdapterFactory에서 소스로 사용할 수 있습니다.
SlingHttpServletResponse 은(는) 다음 항목에 적응합니다.
ContentHandler (XML) | Sling 재작성기 응답인 경우 |
WCM
페이지 은(는) 다음 항목에 적응합니다.
리소스 | 페이지의 리소스입니다. |
LabeledResource | 레이블이 지정된 리소스(이 ==)입니다. |
노드 | 페이지의 노드입니다. |
... | 페이지의 리소스를 조정할 수 있는 모든 작업을 수행합니다. |
구성 요소 은(는) 다음 항목에 적응합니다.
리소스 | 구성 요소의 리소스. |
---|---|
LabeledResource | 레이블이 지정된 리소스(이 ==)입니다. |
노드 | 구성 요소의 노드. |
… | 구성 요소 리소스의 모든 것을 적용할 수 있습니다. |
템플릿 은(는) 다음 항목에 적응합니다.
리소스 | 템플릿의 리소스입니다. |
LabeledResource | 레이블이 지정된 리소스(이 ==)입니다. |
노드 | 이 템플릿의 노드 |
... | 템플릿 리소스의 모든 것을 적용할 수 있습니다. |
보안
승인 가능, 사용자 및 그룹 적용 대상:
DAM
자산 이(가) 다음에 적응함:
태그 지정
태그 은(는) 다음 항목에 적응합니다.
기타
또한 Sling/JCR/OCM은 사용자 지정 OCM(개체 콘텐츠 매핑) 개체에 대해 AdapterFactory
을(를) 제공합니다.
Experience Manager
- 개요
- 릴리스 정보
- 릴리스 정보
- AEMaaCS 기능 릴리스 정보
- AEMaaCS 유지 관리 릴리스 정보
- Cloud Manager 릴리스 정보
- 마이그레이션 도구 릴리스 정보
- Experience Manager 강화 커넥터용 Workfront 릴리스 정보
- 베리에이션 생성 릴리스 정보
- 범용 편집기 릴리스 정보
- 새로운 기능
- AEM Cloud Service의 주요 변경 사항
- 사용 중단 및 제거된 기능과 API
- 프리릴리스 채널
- 보안
- AEM as a Cloud Service 보안 개요
- AEM as a Cloud Service에 대한 고급 네트워킹 구성
- AEM as a Cloud Service에 대한 IMS 지원
- AEM as a Cloud Service에 대한 Same Site 쿠키 지원
- 메일 서비스에 대한 OAuth2 지원
- WAF 규칙이 포함된 트래픽 필터 규칙
- Adobe Developer Console에서 JWT 자격 증명 사용 중단
- AEM as a Cloud Service에 대한 IMS 통합 설정
- Sling 서비스 사용자 매핑 및 서비스 사용자 정의의 모범 사례
- 온보딩
- AEM as a Cloud Service 마이그레이션 여정
- Sites
- AEM Cloud Service의 AEM Sites에 대한 주요 변경 사항
- Sites 및 Edge Delivery Services
- 작성
- 관리
- AEM as a Cloud Service와 통합
- AEM as a Cloud Service용 실제 사용 모니터링
- Assets
- 개요 및 새로운 기능
- Assets as a Cloud Service 주요 변경 사항
- Assets 아키텍처
- 지원되는 파일 형식
- 자산 마이크로서비스 개요
- Assets에서의 접근성
- Assets as a Cloud Service Ultimate
- Assets as a Cloud Service Ultimate 활성화
- Assets as a Cloud Service Prime
- Assets Collaborator 사용자
- AEM Assets를 통합하면서 Edge Delivery Services용 콘텐츠 작성
- 디지털 자산 관리
- 마이크로 프론트엔드 자산 선택기
- 마이크로 프론트엔드 대상 선택기
- 자산 공유
- 자산 재처리
- 자산 마이크로서비스 사용 시작하기
- 자산 추가 및 업로드
- 자산 검색
- 일반적인 자산 관리 작업
- 게시 관리
- 3D 자산 미리보기
- 이미지용 스마트 태그
- 비디오 자산에 스마트 태그 지정
- 자산 구성 방법
- Adobe Stock 자산 사용
- 컬렉션 관리
- 메타데이터 개요
- Adobe Creative Cloud와 통합
- 메타데이터 추가 또는 편집 방법
- 폴더 자산 및 컬렉션 검토
- Assets Insights 사용 및 구성
- 메타데이터 프로필
- 메타데이터 스키마
- 비디오 자산 관리
- MSM을 사용하여 자산 재사용
- 자산 다운로드
- 편집할 자산 체크인 및 체크아웃
- 비공개 폴더 생성 및 공유
- 자산용 Digital Rights Management
- 자산에 워터마크 추가
- Creative Cloud API를 사용하여 자산 처리
- 이미지용 색상 태그
- PDF 문서 관리
- Assets 구성, 관리 및 확장
- 자산 공유 및 배치
- 콘텐츠 조각
- Dynamic Media
- Dynamic Media 여정: 기본 사항
- Experience League의 Dynamic Media 뉴스레터 아카이브
- Dynamic Media 설정
- Dynamic Media를 사용하여 작업
- Dynamic Media 구성
- Dynamic Media Prime 및 Ultimate
- Dynamic Media Prime 및 Ultimate 활성화
- 옵션 - Dynamic Media, 일반 설정 구성
- 옵션 - Dynamic Media, 게시 설정 구성
- Dynamic Media 문제 해결
- Dynamic Media 별칭 계정 구성
- Dynamic Media에서의 접근성
- Dynamic Media 자산 관리
- 이미지 품질 최적화 모범 사례
- 이미지 프로필
- 비디오 프로필
- Dynamic Media 이미지 사전 설정 관리
- Dynamic Media 이미지 사전 설정 적용
- Dynamic Media 뷰어 사전 설정 관리
- Dynamic Media 뷰어 사전 설정 적용
- 일괄 처리 집합 사전 설정
- Dynamic Media의 방식으로 CDN 캐시 무효화
- Dynamic Media Classic의 방식으로 CDN 캐시 무효화
- 스마트 이미징
- 클라이언트측 디바이스 픽셀 비율을 활용한 스마트 이미징
- Dynamic Media 자산 전송
- Dynamic Media 템플릿
- Dynamic Media의 핫링크 보호 활성화
- 3D 지원
- Dynamic Media 제한 사항
- 이미지 세트
- 파노라마 이미지
- 혼합 미디어 세트
- 스핀 세트
- Dynamic Media의 비디오
- 슬라이드 배너
- 대화형 이미지
- 대화형 비디오
- 360 VR 비디오
- Dynamic Media 뷰어를 Adobe Analytics 및 Adobe Experience Platform 태그와 통합
- 빠른 보기를 사용하여 사용자 정의 팝업 만들기
- 반응형 사이트에 최적화된 이미지 게재
- Dynamic Media 자산 미리보기
- 페이지에 Dynamic Media 자산 추가
- 웹 페이지에 Dynamic Video 또는 Dynamic Image 뷰어 임베드
- 웹 애플리케이션에 URL 연결
- 규칙 세트를 사용하여 URL 변환
- Dynamic Media 자산 게시
- Dynamic Media의 선택적 게시를 사용하여 작업
- 선택기를 사용하여 작업
- 콘텐츠 FAQ의 HTTP2 게재
- Flash 뷰어 서비스 종료
- DHTML 뷰어 서비스 종료
- OpenAPI 기능이 포함된 Dynamic Media
- Assets 보기로 작업
- Content Hub
- 개요
- Content Hub 배포
- 브랜드 승인 자산을 Content Hub로 업로드 또는 가져오기
- Content Hub 사용자 인터페이스 구성
- Content Hub에 대한 자산 승인
- Content Hub에서 자산 검색
- 자산 속성
- Content Hub에서 자산 공유
- Content Hub를 사용하여 자산 다운로드
- Content Hub에서 라이선스가 부여된 자산 관리
- Content Hub에서 컬렉션 관리
- Content Hub에서 Adobe Express를 사용하여 이미지 편집
- Content Hub의 Asset Insights
- Content Hub에 대해 자주 묻는 질문
- 모범 사례
- Adobe Workfront와 통합
- Adobe Express와 통합
- Creative Cloud와 통합
- Forms
- 개요
- 설정 및 마이그레이션
- 통합
- 서비스
- Adobe Sign과 AEM Forms as a Cloud Service 통합
- DocuSign과 AEM Forms as a Cloud Service 통합
- Adobe Analytics에 적응형 양식 통합
- 적응형 양식 분석 보고서 보기 및 이해
- Adobe Workfront Fusion에 적응형 양식 제출
- Microsoft Power Automate와 적응형 양식 통합
- AEM Sites 페이지에 적응형 양식 임베드
- 외부 웹 페이지에 핵심 구성 요소 기반 적응형 양식 임베드
- 외부 웹 페이지에 기초 구성 요소 기반 적응형 양식 임베드
- Adobe Marketo Engage와 적응형 양식 통합
- Forms 데이터 모델
- 서비스
- 적응형 양식
- 적응형 양식 조각 만들기
- AEM Sites 페이지 또는 경험 조각에 적응형 양식 추가
- 핵심 구성 요소
- 적응형 양식 만들기
- 적응형 양식 만들기
- 핵심 구성 요소 기반 적응형 양식의 레이아웃 설정
- 적응형 양식 조각 만들기
- 적응형 양식의 테마 만들기 - 핵심 구성 요소
- 핵심 구성 요소 기반 적응형 템플릿 만들기
- XFA Forms 템플릿 기반 적응형 양식(핵심 구성 요소) 만들기
- 적응형 양식의 기록 문서 생성
- 기계 번역 또는 인간 번역을 사용하여 적응형 양식 번역
- 리디렉션 페이지 또는 감사 메시지 구성
- 반복 가능한 섹션으로 양식 만들기
- 적응형 양식에 대한 제출 액션 구성
- Azure Blob Storage에 적응형 양식 제출
- Microsoft에 적응형 양식 제출
- Microsoft® SharePoint에 적응형 양식 연결
- AEM 적응형 양식과 AEM Workflow 통합
- 적응형 양식의 REST 엔드포인트에 제출 액션 구성
- 적응형 양식의 이메일 보내기 제출 액션 구성
- 적응형 양식에서 Google reCAPTCHA 사용
- 적응형 양식 핵심 구성 요소의 hCaptcha 사용
- 적응형 양식 핵심 구성 요소의 Turnstile Captcha 사용
- 적응형 양식에서 사용자 정의 오류 핸들러 추가
- 핵심 구성 요소 기반 적응형 양식의 로케일 추가
- 적응형 양식에 대한 JSON 스키마 디자인 (핵심 구성 요소)
- 적응형 양식에 버전 관리, 댓글 및 주석 추가
- 적응형 양식 비교
- 사용자 정의 제출 액션 만들기
- Experience Manager Forms에서 게시 관리
- 핵심 구성 요소 기반 적응형 양식의 규칙 편집기 소개
- 핵심 구성 요소 기반 적응형 양식의 사용자 정의 함수 소개
- Forms 포털 및 해당 구성 요소 소개
- 적응형 양식 만들기
- 기초 구성 요소
- 적응형 양식 키워드
- 양식 미리보기
- 인터랙티브 커뮤니케이션
- Forms 중심 워크플로
- 커뮤니케이션 API
- 트랜잭션 보고서
- 개발자 API 참조
- 문제 해결
- Screens
- Content and Commerce
- Edge Delivery Services
- Edge Delivery Services 개요
- AEM과 함께 Edge Delivery Services 사용
- 작성 방법 선택
- WYSIWYG 작성
- 문서 기반 작성
- 애플리케이션 빌드
- 애플리케이션 실행
- Forms 빌드
- 개요
- WYSIWYG 작성
- Edge Delivery Services용 Forms Universal Editor 소개 - 전체 안내서
- 범용 편집기를 사용하여 작성을 시작하는 방법 - 단계별 자습서
- Universal Editor 인터페이스 안내서: 도구, 기능 및 탐색 설명
- 모바일 친화적인 Forms 만들기: 범용 편집기의 반응형 디자인
- 아름다운 Forms 디자인: 범용 편집기를 위한 스타일 및 테마 지정 가이드
- Forms에 동적 동작 추가: 규칙 편집기에 대한 전체 안내서
- 양식 제출 안내서: 양식 제출 작업 구성 및 사용자 지정
- 스팸으로부터 Forms 보호: reCAPTCHA 보안 추가
- Forms 게시 및 배포 방법: 범용 편집기 게시 안내서
- 사용자 지정 양식 구성 요소 빌드: 유니버설 편집기에 대한 개발자 안내서
- 문서 기반 작성
- 첫 번째 양식 작성: Google Sheets 및 Excel로 빠른 시작 안내서
- Google Sheets 또는 Excel을 사용하여 Forms을 만드는 방법: 단계별 안내서
- 적응형 양식 블록의 다양한 구성 요소
- 양식을 Google Sheets에 연결: 데이터 수집 설정 안내서
- 양식을 라이브로 만들기: 게시 및 데이터 수집 안내서
- 아름다운 Forms 디자인: 스타일 및 사용자 지정 안내서
- 성공 메시지 만들기: 양식의 감사 페이지 사용자 지정
- 양식 제출 안내서: Forms 제출 서비스 사용
- 동적 양식 필드: URL에서 옵션 로드
- 스마트 동작 추가: 양식 규칙 및 논리 안내서
- 동적 Forms 만들기: 반복 가능한 섹션 추가
- Forms 보호: reCAPTCHA 보안 추가
- Edge Delivery 리소스
- Headless
- 생성형 AI
- 구현
- AEM as a Cloud Service용 애플리케이션 구현
- Cloud Manager 사용
- AEM as a Cloud Service용 개발
- AEM 프로젝트 구조
- AEM 프로젝트 저장소 구조 패키지
- AEM as a Cloud Service SDK
- AEM 신속한 개발 환경
- AEM as a Cloud Service 개발 지침
- AEM as a Cloud Service Developer Console (Beta)
- 로깅
- 로그 전달
- 구성 및 구성 브라우저
- AEM 기술 기초
- API 참조 자료
- OpenAPI 기반 API
- 서버측 API용 액세스 토큰 생성
- 빠른 사이트 생성 및 프론트엔드 맞춤화
- 프론트엔드 파이프라인으로 Sites 개발
- 사이트 템플릿 및 테마 맞춤화
- AEM Headful 및 Headless
- Sling 모델 내보내기 도구를 통한 ResourceResolver 직렬화 비활성화
- 전체 스택 AEM 개발
- 범용 편집기
- Headless 경험 관리
- 하이브리드 및 SPA 개발
- 개발자 도구
- 개인화
- AEM as a Cloud Service 구성 및 확장
- AEM as a Cloud Service에 배포
- 작성자 계층
- 콘텐츠 게재 개요
- 커넥터
- 운영
- 규정 준수