Java SDN 4.2嵌入式系统的自动布线Neo4j OGM会话
在SDN 4.1参考中,配置包括扩展Neo4jConfiguration和将会话对象显式设置为@Bean。在4.2中,指导原则是不要扩展NEO4JC配置并遵循下面的配置。请注意,没有显式设置独立会话对象: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
@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。