Spring Data Neo4J 4.0.0: BeforeSaveEvent not firing?



我试图在Spring中设置Neo4J时捕获beforeaveevent,以便我可以在正在保存的类上调用方法beforeSave()。不幸的是,它似乎没有被注册为侦听器,因为我的print语句都没有被执行。

想法赞赏。

@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");
                }
            }
        };
    }
}

这些事件是由Neo4jTemplate(参见http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_formerly_lifecycle_events)触发的,因此您必须使用它来触发保存。

在您的配置NitroNeo4jConfiguration中包含

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

和在你的应用程序中

@Autowired
private Neo4jOperations neo4jTemplate;

,然后用来保存

neo4jTemplate.save(person);

相关内容

  • 没有找到相关文章

最新更新