【问题标题】:Spring Data Neo4J Database ConnectionSpring Data Neo4J 数据库连接
【发布时间】:2017-04-19 10:28:35
【问题描述】:

我正在尝试使用带有以下链接 (http://projects.spring.io/spring-data-neo4j/#quick-start) 的 Spring Data 连接到 Neo4J 数据库。但这似乎不起作用。它无法自行创建存储库实现。这就是我得到 BeanCreationException 的原因。这是我到目前为止所尝试的。

  1. PersistenceContext.java
@Configuration
@EnableTransactionManagement
@ComponentScan("com.ksh.neo4j")
@EnableNeo4jRepositories("com.ksh.neo4j.repositories")
public class PersistenceContext  {

  @Bean
  public org.neo4j.ogm.config.Configuration getConfiguration() 
  {
      org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration();
      configuration.driverConfiguration()
                   .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver")
                   .setURI("http://localhost:7474");
      return configuration;
  }
  @Bean
  public Neo4jTransactionManager transactionManager() {
      return new Neo4jTransactionManager(getSessionFactory());
  }
  @Bean
  public SessionFactory getSessionFactory() {
      return new SessionFactory("com.ksh.neo4j.domains");
  }
}
  1. PersonRepository.java
@Repository
public interface PersonRepository extends GraphRepository<Person> {
}
  1. PersonService.java
@Service
public class PersonService {  
  @Autowired
  private PersonRepository personRepository;

  public Person save(Person person) {
      return personRepository.save(person);
  }
}
  1. PersonController.java
@RestController
@RequestMapping("/person/**")
public class PersonController {
  @Autowired
  private PersonService personService;

  @RequestMapping("/save")
  public ResponseObject save(@RequestBody Person person) 
  {
      try {
          personService.save(person);
          return ResponseObjectCreator.createResponseObj(ResponseStatus.SUCSESS);
      }
      catch (Exception e) {
          e.printStackTrace();
      }
      return ResponseObjectCreator.createResponseObj(ResponseStatus.FAILURE); 
  }
}
  1. WebMvcConfig.java
 @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = {"com.ksh.neo4j.controllers", "com.ksh.neo4j"})
    public class WebMvcConfig extends WebMvcConfigurerAdapter {]
      @Override
      public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
          configurer.enable();
      }
    }
  1. POM.xml
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-commons</artifactId>
  <version>1.13.1.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-neo4j</artifactId>
  <version>4.2.1.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>4.3.7.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.7.RELEASE</version>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.neo4j</groupId>
  <artifactId>neo4j-ogm-embedded-driver</artifactId>
  <version>2.1.2</version>
</dependency>
<dependency>
  <groupId>org.neo4j</groupId>
  <artifactId>neo4j-ogm-core</artifactId>
  <version>2.1.1</version>
</dependency>
<dependency>
  <groupId>org.neo4j</groupId>
  <artifactId>neo4j-ogm-http-driver</artifactId>
  <version>2.1.1</version>
</dependency>
<dependency>
  <groupId>org.neo4j</groupId>
  <artifactId>neo4j-kernel</artifactId>
  <version>3.1.3</version>
</dependency>
<dependency>
  <groupId>org.neo4j.app</groupId>
  <artifactId>neo4j-server</artifactId>
  <version>3.1.3</version>
</dependency>

我收到以下异常

引起:org.springframework.beans.BeanInstantiationException: 无法实例化 [org.neo4j.ogm.session.SessionFactory]:工厂 方法“getSessionFactory”抛出异常;嵌套异常是 org.neo4j.ogm.exception.ServiceNotFoundException:无法加载 司机:空。

任何帮助都会很好。

【问题讨论】:

    标签: configuration spring-data spring-data-neo4j spring-data-neo4j-4 neo4j-ogm


    【解决方案1】:

    您没有说您使用的是哪个版本,但如果您使用的是 4.2.1 那么快速入门似乎缺少事务管理器定义:

    将以下内容添加到您的 PersistenceContext 类中:

    @Bean
    public Neo4jTransactionManager transactionManager() {
        return new Neo4jTransactionManager(sessionFactory());
    }
    

    请参阅 spring-data-neo4j 文档了解更多详情。

    http://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference.getting_started.spring-configuration

    【讨论】:

    • 我使用的是 4.2.1 但 4.2.1 版本没有类 org.springframework.data.neo4j.config.Neo4jConfiguration。所以我将版本更改为 4.1.8。您给出的解决方案给了我一个错误,上面写着“构造函数 Neo4jTransactionManager(SessionFactory) 未定义”。可能是因为4.1.8。
    • 是的,对于 4.2.1,只需删除 extends Neo4jConfiguration
    • @frant.harth 我已经更新了异常和 pom.xml 的问题。我收到“无法加载驱动程序:null”。错误。
    • @KSHiTiJ 你的驱动配置是什么样的?
    • @frant.harth 我更新了 PersistenceContext.java。请检查。
    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 2012-11-27
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多