Spring Data Neo4J 4.0.0:BeforeSaveEvent 未触发?

2023-12-15

我试图在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");
                }
            }
        };
    }

}

这些事件由 Neo4jTemplate 触发(请参阅http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_forming_lifecycle_events),所以这就是您必须用来触发保存的内容。

在您的配置中NitroNeo4jConfiguration包括

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

在你的申请中,

@Autowired
private Neo4jOperations neo4jTemplate;

然后用于保存

neo4jTemplate.save(person);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data Neo4J 4.0.0:BeforeSaveEvent 未触发? 的相关文章

随机推荐