Spring Data Neo4J 4.0.0:BeforeSaveEvent没有触发? [英] Spring Data Neo4J 4.0.0: BeforeSaveEvent not firing?

查看:292
本文介绍了Spring Data Neo4J 4.0.0:BeforeSaveEvent没有触发?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Spring中设置Neo4J时捕获BeforeSaveEvent,这样我就可以在正在保存的类上调用方法 beforeSave()。不幸的是,它似乎没有被注册为监听器,因为我的打印语句正在执行。

I'm trying to capture the BeforeSaveEvent when setting up Neo4J in Spring, so that I can call a method beforeSave() on the class that is being saved. Unfortunately, it seems like its not being registered as a listener as non of my print statements are being executed.

赞赏的想法。

@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 ),这就是你必须用来触发的东西保存。

These events are fired by Neo4jTemplate (see http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_formerly_lifecycle_events), so that's what you'll have to use to trigger the save.

在您的配置中 NitroNeo4jConfiguration 包含

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

并在您的申请中,

@Autowired
private Neo4jOperations neo4jTemplate;

然后用于保存

neo4jTemplate.save(person);

这篇关于Spring Data Neo4J 4.0.0:BeforeSaveEvent没有触发?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆