@Service 빠지면 이벤트 못 받는다? #shorts #SAP #CAPforJava

Moderator · 조회 2

CAP Java Service란?

CAP for Java에서 서비스 로직은 EventHandler를 구현한 컴포넌트 클래스에 작성합니다. 핵심은 @ServiceName으로 대상 서비스를 정확히 지정하는 것입니다. 이 어노테이션이 없으면 이벤트가 핸들러로 라우팅되지 않습니다.

@Service 패턴 기본 구조

@Component
@ServiceName(CatalogService_.CDS_NAME)
public class CatalogServiceHandler
    implements EventHandler {

  @On(event = CqnService.EVENT_READ,
      entity = Books_.CDS_NAME)
  public void onRead(
      CdsReadEventContext ctx) {
    // 조회 로직
  }
}

핸들러 어노테이션 실행 순서

@Before  // 검증, 기본값 설정
@On      // 실제 처리 로직
@After   // 결과 변환, 감사 로그

실행 순서는 @Before → @On → @After. @On이 없으면 CAP이 기본 CRUD를 자동 처리합니다.

@ServiceName 누락 시 증상

@ServiceName이 없거나 이름이 틀리면 이벤트가 핸들러로 전달되지 않습니다. 로그에 오류가 없어도 로직이 실행되지 않으므로 반드시 확인하세요.

핵심 한 줄

@ServiceName + EventHandler 구현 없이는 CAP Java 핸들러가 절대 작동하지 않는다.