spring-jpa-hibernate로 구동되는 계층화 된 웹 응용 프로그램이 있으며 이제 elasticsearch (검색 엔진)를 통합하려고합니다.최대 절전 모드 이벤트를 수신 대기하는 모듈을 엔티티 자체에서 분리하는 방법은 무엇입니까?
내가하고 싶은 일은 모든 postInsert/postUpdate 이벤트를 캡처하여 해당 엔티티를 elasticindarch에 보내어 다시 인덱싱하도록하는 것입니다.
내가 직면 한 문제는 "dal-entities"프로젝트에 "search-indexer"에 대한 런타임 종속성이 있고 "search-indexer"에 "dal-entities"에 대한 컴파일 종속성이 있다는 것입니다. 다른 개체에 대해 다른 일을해야합니다.
"검색 인덱서"를 DAL의 일부로 생각했는데 (데이터에서 작업을 수행한다고 주장 할 수 있기 때문에) DAO 섹션의 일부 여야합니다.
나는 내 질문을 다음과 같이 바꿔 쓸 수 있다고 생각한다 : 어떻게 그것의 책임이 아니기 때문에 엔티티 프로젝트에서만 전적으로 캡슐화 될 수없는 최대 절전 이벤트 리스너에서 로직을 가질 수 있을까?
업데이트
DAL-기관 프로젝트는 인덱서에 의존하는 이유는 내가 obviousely DAL-기관에있는 JPA 상황에 대한 책임이 스프링 구성 파일의 수신기를 (구성 할 필요가 있다는 것입니다).
종속성은 컴파일 타임 범위가 아니라 런타임 범위입니다 (런타임에 최대 절전 모드 컨텍스트에 해당 수신기가 필요하기 때문에).
간단한 pojos에 대해서도 이것이 구성되어 있다고 생각하십니까? dal-entities는 이미 인덱서의 인터페이스에만 의존하고 있지만 인덱서는 구체적인 모델 인 pojos에 의존하기 때문에 여기서는 어떤 문제가 있습니다. 나는 인터페이스를 pojos에서도 사용하는 방법에 대해 생각했지만 그 방법이 확실하지 않았습니다. – Ittai
_how_ (또는 _why_) 도메인 포지가 인덱서에 의존하는지 궁금합니다. 인덱서가 의존하는 것이 맞지만 다른 방법은 아닙니다. 도메인 클래스 샘플 (pojos)을 게시 할 수 있습니까? – cdeszaq
더 많은 질문을 던지 셨습니다. 그렇습니다. 종속성을 제거해야하는 경우 인터페이스는 놀라 울 정도로 간단한 클래스에도 사용할 수 있습니다. 결국 Runable 인터페이스를 봐라. 단 하나의 메소드! – cdeszaq