복붙노트

[SPRING] Spring Data Neo4J 4.0.0 : BeforeSaveEvent가 실행되지 않습니까?

SPRING

Spring Data Neo4J 4.0.0 : BeforeSaveEvent가 실행되지 않습니까?

Spring에서 Neo4J를 설정할 때 BeforeSaveEvent를 캡처하려고하므로 저장중인 클래스에서 beforeSave () 메서드를 호출 할 수 있습니다. 불행히도, 그것은 내 인쇄 진술이 실행되고 있지 않기 때문에 청취자로 등록되지 않은 것처럼 보입니다.

아이디어를 높이 평가했습니다.

@Configuration
@EnableNeo4jRepositories(basePackages = "com.noxgroup.nitro")
@EnableTransactionManagement
public class NitroNeo4jConfiguration extends Neo4jConfiguration {

    @Bean
    public Neo4jServer neo4jServer () {
        System.setProperty("username", "neo4j");
        System.setProperty("password", "*************");
        return new RemoteServer("http://localhost:7474");
    }

    @Bean
    public SessionFactory getSessionFactory() {
        return new SessionFactory("com.noxgroup.nitro.domain");
    }

    @Bean
    ApplicationListener<BeforeSaveEvent> beforeSaveEventApplicationListener() {
        return new ApplicationListener<BeforeSaveEvent>() {
            @Override
            public void onApplicationEvent(BeforeSaveEvent event) {
                System.out.println("Listening to event");
                Object entity = event.getEntity();
                if (entity instanceof NitroNode) {
                     ((NitroNode)entity).beforeSave();
                } else {
                    System.out.println("Not picking it up");
                }
            }
        };
    }

}

해결법

  1. ==============================

    1.이 이벤트는 Neo4jTemplate (http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_formerly_lifecycle_events 참조)에 의해 해고되기 때문에 다음을 수행해야합니다. 저장을 시작하십시오.

    이 이벤트는 Neo4jTemplate (http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_formerly_lifecycle_events 참조)에 의해 해고되기 때문에 다음을 수행해야합니다. 저장을 시작하십시오.

    구성에서 NitroNeo4jConfiguration include

    @Bean
    public Neo4jOperations getNeo4jTemplate() throws Exception {
        return new Neo4jTemplate(getSession());
    }
    

    귀하의 신청서에서,

    @Autowired
    private Neo4jOperations neo4jTemplate;
    

    저장에 사용됩니다.

    neo4jTemplate.save(person);
    
  2. from https://stackoverflow.com/questions/30604863/spring-data-neo4j-4-0-0-beforesaveevent-not-firing by cc-by-sa and MIT license