Neo4j - EventListener注册

时间:2018-01-13 10:24:46

标签: java neo4j spring-data neo4j-ogm

我正在Neo4j OGM 2.1.3使用Spring Boot 1.5.9 在spring数据和neo4j ogm的文档参考中,事件监听器的注册解释如下。

    class AddUuidPreSaveEventListener implements EventListener {

    void onPreSave(Event event) {
        DomainEntity entity = (DomainEntity) event.getObject():
        if (entity.getId() == null) {
            entity.setUUID(UUID.randomUUID());
        }
    }
    void onPostSave(Event event) {
    }
    void onPreDelete(Event event) {
    }
    void onPostDelete(Event event) {
    }

   EventListener eventListener = new AddUuidPreSaveEventListener();

// register it on an individual session
session.register(eventListener);

// remove it.
session.dispose(eventListener);

// register it across multiple sessions
sessionFactory.register(eventListener);

// remove it.
sessionFactory.deregister(eventListener);

在我的代码中,我找不到获取会话实例的方法。

@SpringBootApplication
@EntityScan("movies.spring.data.neo4j.domain")
public class SampleMovieApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(SampleMovieApplication.class, args);

    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    private static Class<SampleMovieApplication> applicationClass = SampleMovieApplication.class;
}

我使用上面的代码片段运行项目。

我的问题是:如何获取会话实例并使用它来注册事件监听器?。

修改:我的代码是使用GitHub上的this代码示例构建的

1 个答案:

答案 0 :(得分:0)

AFAIK如果不手动打开它,则无法访问当前会话。但这与SpringData(Neo4j)的想法不符。

您可以注册EventListener SessionFactory注册时可以访问的@SpringBootApplication public class SdnApplication { private final SessionFactory sessionFactory; public SdnApplication(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @PostConstruct public void registerEventlistener() { sessionFactory.register(new EventListenerAdapter() { @Override public void onPreSave(Event event) { System.out.println("about to save sth"); } }); } public static void main(String[] args) { SpringApplication.run(SdnApplication.class, args); } } ,例如你的应用程序配置。

样品:

this.modalTemplate = new ReactiveVar(false);
this.modalData = new ReactiveVar({});

{{> Template.dynamic template=getModalTemplate data=getModalData }}