Java SDN 4.2嵌入式系统的自动布线Neo4j OGM会话

Java SDN 4.2嵌入式系统的自动布线Neo4j OGM会话,java,spring,spring-data-neo4j,spring-data-neo4j-4,neo4j-ogm,Java,Spring,Spring Data Neo4j,Spring Data Neo4j 4,Neo4j Ogm,在SDN 4.1参考中,配置包括扩展Neo4jConfiguration和将会话对象显式设置为@Bean。在4.2中,指导原则是不要扩展NEO4JC配置并遵循下面的配置。请注意,没有显式设置独立会话对象: @Bean public org.neo4j.ogm.config.Configuration configuration() { org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configur

在SDN 4.1参考中,配置包括扩展Neo4jConfiguration和将会话对象显式设置为@Bean。在4.2中,指导原则是不要扩展NEO4JC配置并遵循下面的配置。请注意,没有显式设置独立会话对象:

@Bean
public org.neo4j.ogm.config.Configuration configuration() {
    org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
    config
            .driverConfiguration()
            .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver")
            .setURI(dbLocation);
    return config;

@Bean
public SessionFactory sessionFactory() {
    SessionFactory sessionFactory = new SessionFactory(configuration(), "org.my.package" );
    sessionFactory.register(new MyPreSaveListener());
    return sessionFactory;
}
我见过在存储库类中@Autowiring会话对象本身(而不是工厂)时使用此配置。这是否意味着整个应用程序中只有一个会话实例?如果是这样的话,这是否违背了会话寿命应限制在应用程序的“工作单元”内的想法


请注意,我的存储库是自定义的,不扩展neo4j repos,因为我目前正在迁移,不再使用Neo4jTemplate对象。

否,每个应用程序没有一个会话。只要从
@Transactional
注释或
TransactionTemplate
中调用
会话
,它将调用代理
会话
(在启动期间由Spring Data Neo4j框架生成)。这将有效地为事务的生命周期(在该生命周期内进行划分)创建一个会话,一旦超出范围,允许对其进行垃圾收集。

尝试使用上述配置自动连接会话对象。收到“NoSuchBeanDefinitionException:没有可用的'org.neo4j.ogm.session.session'类型的合格bean:至少需要1个符合autowire候选条件的bean。”知道什么会阻止从SessionFactory抓取会话实例吗?您是否有
@EnabledNeo4jRepositories
@EnabledTransactionManagement
?您还必须确保自动连线
会话
的位置是
@Component
s。