Use-Class 추가

info 구성 요소는 간단한 기능을 수행하기 위해 use-class가 필요하지 않습니다. 단, HTL에서 수행할 수 없는 작업을 수행해야 하므로 use-class가 필요한 경우가 있습니다. 하지만 다음 사항에 유의하십시오.

노트
use-class는 HTL만으로는 수행할 수 없는 작업에만 사용해야 합니다.

예를 들어 info 구성 요소가 리소스의 titledescription 속성을 표시하지만 모두 소문자로 표시하기를 원한다고 가정합니다. HTL에는 문자열을 소문자로 변환하는 메서드가 없으므로 Java use-class를 추가하고 /apps/my-example/component/info/info.html을 다음과 같이 변경할 수 있습니다.

<div data-sly-use.info="Info">
    <h1>${info.lowerCaseTitle}</h1>
    <p>${info.lowerCaseDescription}</p>
</div>

또한 /apps/my-example/component/info/Info.java가 생성됩니다.

package apps.my_example.components.info;

import com.adobe.cq.sightly.WCMUsePojo;

public class Info extends WCMUsePojo {
    private String lowerCaseTitle;
    private String lowerCaseDescription;

    @Override
    public void activate() throws Exception {
        lowerCaseTitle = getProperties().get("title", "").toLowerCase();
        lowerCaseDescription = getProperties().get("description", "").toLowerCase();
    }

    public String getLowerCaseTitle() {
        return lowerCaseTitle;
    }

    public String getLowerCaseDescription() {
        return lowerCaseDescription;
    }
}

자세한 내용은 com.adobe.cq.sightly.WCMUsePojo용 Javadocs를 참조하십시오.

이제 코드의 여러 부분을 살펴보겠습니다.

로컬 및 번들 Java 클래스 비교

Java use-class는 두 가지 방법으로 설치할 수 있습니다.

  • 로컬 - 로컬 설치에서 Java 소스 파일은 HTL 파일과 함께 동일한 저장소 폴더에 배치됩니다. 소스는 요청 시 자동으로 컴파일됩니다. 별도의 컴파일 또는 패키징 단계가 필요하지 않습니다.
  • 번들 - 번들 설치에서 Java 클래스는 표준 AEM 번들 배포 메커니즘을 사용하여 OSGi 번들 내에서 컴파일되고 배포되어야 합니다(번들 Java 클래스 섹션 참조).

언제 어떤 방법을 사용해야 하는지 알기 위해서는 두 가지 사항을 염두에 두어야 합니다.

  • use-class가 해당 구성 요소와 관련된 경우 로컬 Java use-class ​가 권장됩니다.
  • Java 코드가 여러 HTL 구성 요소에서 액세스되는 서비스를 구현하는 경우 번들 Java 사용 클래스 ​가 권장됩니다.

이 예에서는 로컬 설치를 사용합니다.