为什么带有 Spring Boot 2.0.0.M4 的 Neo4j OGM 显然需要嵌入式驱动程序?
Why does Neo4j OGM with Spring Boot 2.0.0.M4 apparently require the embedded driver?
我一直在使用最新的 Spring Data Neo4j(当前为 5.0.0.RC3)试用 Spring Boot 2(现阶段为 2.0.0.M4),但似乎无法明白了 运行.
我收到以下错误:
org.neo4j.ogm.exception.ConfigurationException: Could not load driver class org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
我不要求嵌入式驱动程序,我也不想要。我只想使用螺栓驱动器,它已经是 spring-data-neo4j.
的依赖项
我发布了一个project to Github that was built using output from Spring Initializr可以运行暴露错误。
供参考,我的build.gradle如下。我是否错误配置了我的项目?或者当前的 Spring 和 Neo4j 里程碑版本是否存在更严重的问题?
buildscript {
ext {
springBootVersion = '2.0.0.M4'
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
version = "0.0.1-SNAPSHOT"
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenLocal()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile "org.apache.tomcat.embed:tomcat-embed-jasper"
compile "org.springframework.boot:spring-boot-starter-web"
compile "org.springframework.boot:spring-boot-starter-data-neo4j"
runtime "org.springframework.boot:spring-boot-devtools"
}
正如我之前提到的,其余代码在 Github 中可用。
您在任何地方都没有嵌入式驱动程序依赖项,请参阅
./gradlew dependencies
输出并搜索 neo4j-ogm.*driver
- 只有 neo4j-ogm-bolt 驱动程序存在。因此,如果您只想使用 bolt,则必须正确设置依赖项。
你看到这个异常的原因是你的配置有误:
return new SessionFactory("com.example.domain");
这不提供配置文件的路径,默认情况下是临时嵌入式数据库,需要嵌入式驱动程序 - 因此例外。
你有两个选择
将 OGM 配置传递给 SessionFactory:
@Bean
public org.neo4j.ogm.config.Configuration configuration() {
return new org.neo4j.ogm.config.Configuration.Builder(new ClasspathConfigurationSource("ogm.properties")).build();
}
@Bean
public SessionFactory sessionFactory() {
return new SessionFactory(configuration(), "com.example.domain");
}
请注意,这只是 OGM 解决方案,不支持 yml 文件。
使用 spring SDN 的启动自动配置 - 只需删除 Neo4jConfiguration
class,Spring 启动将检测到没有 SessionFactory
bean 并将配置所有必需的(包括事务管理器)。保持你的 Application
class 和 application.yml
不变。
我一直在使用最新的 Spring Data Neo4j(当前为 5.0.0.RC3)试用 Spring Boot 2(现阶段为 2.0.0.M4),但似乎无法明白了 运行.
我收到以下错误:
org.neo4j.ogm.exception.ConfigurationException: Could not load driver class org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
我不要求嵌入式驱动程序,我也不想要。我只想使用螺栓驱动器,它已经是 spring-data-neo4j.
的依赖项我发布了一个project to Github that was built using output from Spring Initializr可以运行暴露错误。
供参考,我的build.gradle如下。我是否错误配置了我的项目?或者当前的 Spring 和 Neo4j 里程碑版本是否存在更严重的问题?
buildscript {
ext {
springBootVersion = '2.0.0.M4'
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
version = "0.0.1-SNAPSHOT"
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenLocal()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile "org.apache.tomcat.embed:tomcat-embed-jasper"
compile "org.springframework.boot:spring-boot-starter-web"
compile "org.springframework.boot:spring-boot-starter-data-neo4j"
runtime "org.springframework.boot:spring-boot-devtools"
}
正如我之前提到的,其余代码在 Github 中可用。
您在任何地方都没有嵌入式驱动程序依赖项,请参阅
./gradlew dependencies
输出并搜索 neo4j-ogm.*driver
- 只有 neo4j-ogm-bolt 驱动程序存在。因此,如果您只想使用 bolt,则必须正确设置依赖项。
你看到这个异常的原因是你的配置有误:
return new SessionFactory("com.example.domain");
这不提供配置文件的路径,默认情况下是临时嵌入式数据库,需要嵌入式驱动程序 - 因此例外。
你有两个选择
将 OGM 配置传递给 SessionFactory:
@Bean public org.neo4j.ogm.config.Configuration configuration() { return new org.neo4j.ogm.config.Configuration.Builder(new ClasspathConfigurationSource("ogm.properties")).build(); } @Bean public SessionFactory sessionFactory() { return new SessionFactory(configuration(), "com.example.domain"); }
请注意,这只是 OGM 解决方案,不支持 yml 文件。
使用 spring SDN 的启动自动配置 - 只需删除
Neo4jConfiguration
class,Spring 启动将检测到没有SessionFactory
bean 并将配置所有必需的(包括事务管理器)。保持你的Application
class 和application.yml
不变。