带有弹簧靴的嵌入式neo4j

时间:2018-07-13 19:41:48

标签: spring-boot neo4j spring-data-neo4j neo4j-ogm

我正在尝试将embedded neo4j配置为spring boot。但是在使用其他软件包的版本遇到很多麻烦之后,我想到了

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
            <version>1.5.8.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-embedded-driver</artifactId>
            <version>2.1.6</version>
            <scope>compile</scope> <!--compatible with spring-boot-starter-data-neo4j 1.5.8.RELEASE-->
        </dependency>


        <dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j</artifactId>
            <version>3.1.0</version>
            <scope>runtime</scope>
        </dependency>

这是graph module的依赖关系,而rest module的依赖关系。

启动服务器后,一切正常,但是当我尝试使用此代码访问neo4j server时。

@Service
public class FileBasedImportServiceImpl implements ImportService {

private Session session;

@Autowired
public FileBasedImportServiceImpl(Session session) {
    this.session = session;
}

@Transactional
public void clearDatabase() {
    session.purgeDatabase();
}

@Transactional
public void load() {
    StringBuilder sb = new StringBuilder();
    BufferedReader reader = new BufferedReader(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("school.cql")));
    String line;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line);
            sb.append(" ");
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    String cqlFile = sb.toString();
    session.query(cqlFile, Collections.EMPTY_MAP);
}
}

通过在控制器中调用load()方法,我被拒绝连接。

Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:7474 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

我认为embedded neo4j并没有开始,这就是为什么。那么如何使嵌入式服务器启动。我以为如果使用Spring Boot,它将自动启动,但事实并非如此。

注意:文件school.cql包含cypher query 这是我https://github.com/neo4j-examples/sdn-university

关注的项目

我已经将注释添加到主类@EntityScan("com")

谢谢。

更新

这是spring application

的配置注释
@ComponentScan(basePackages={"com"})
@Configuration
@EnableJpaRepositories("com.repository")
@EntityScan(basePackages = {"com.domain", "org.springframework.data.jpa.convert.threeten"})
@EnableConfigurationProperties
@EnableAutoConfiguration
@EnableScheduling
@SpringBootApplication(exclude = org.activiti.spring.boot.SecurityAutoConfiguration.class)
@EnableNeo4jRepositories("com.graph.repository")
public class Application extends SpringBootServletInitializer {

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

    }

就像我说的,我已经按照本教程https://github.com/neo4j-examples/sdn-university进行操作,唯一不同的是制作两个maven模块,而不是为包含repository / {与domain entities相关的{1}} / service。另一个模块与neo4jspring boot

相关

1 个答案:

答案 0 :(得分:0)

我已经找到了问题

Spring Boot无法检测到neo4j依赖项

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>3.1.0</version>
    <scope>runtime</scope>
</dependency>

如果它与spring-boot maven插件不在同一pom.xml中。

因此换句话说,传递依赖项不起作用。