복붙노트

[SPRING] 같은 스프링 부팅 응용 프로그램에서 neo4j 및 cassandra 저장소를 구성하는 방법

SPRING

같은 스프링 부팅 응용 프로그램에서 neo4j 및 cassandra 저장소를 구성하는 방법

스프링 데이터를 사용하여 스프링 부트로 별도로 neo4j 및 cassandra 저장소를 구성했습니다. 그러나 동일한 프로젝트에서 두 개의 리포지토리를 사용하려고하면 예상대로 작동하지 않습니다.

이것은 내 폴더 구조입니다.

----- org.test.project

 -----controller
      BarController
      FooController
 -----models
      -----dao
           -----cassandra
                BarDAO
                FooDAO
           -----neo4j
                BarDAO
                FooDAO
 -----repositories
      -----cassandra
           BarRepository
           FooRepository
      -----neo
           BarRepository 
           FooRepository
 -----services
      CassandraService (Has cassandra repositories @Autowired)
      NeoService(Has neo repositories @Autowired)
 TestApp.java

모든 저장소는 각각의 DAO로 각각의 스프링 데이터 저장소를 확장합니다.

이 구성으로 실행하면 다음과 같은 오류가 발생합니다.

 Field airportRepository in org.test.project.TestApp required a bean of type 'org.test.project.repositories.cassandra.BarRepository' that could not be found.

저장소 이름을 변경하려고했습니다. 그런 다음 작업이 시작되었습니다.

첫 번째 질문은 다른 패키지에있는 것과 동일한 이름을 사용할 수 없으며 작동하기 시작한다는 것입니다.

이번에는 작업을 시작했지만 인증 헤더에 오류가 발생했습니다.

 org.neo4j.ogm.drivers.http.request.HttpRequestException: http://localhost:7474/db/data/transaction/commit: No authentication header supplied.

나는 이미 ogm.properties를 추가했다. neo4j 저장소만을 사용할 때와 같은 방식으로 ogm.properties를 추가했다. 그러나 그들은 더 이상 적용되지 않는 것 같습니다. 그래서 나는 application.properties에 다음을 추가했다.

 spring.data.neo4j.password=neo4j
 spring.data.neo4j.username=neo4j

두 번째 질문은 neo4j를 단지 neo4j와 같은 방식으로 구성 할 수 있습니까? 나는 ogm.properties에서 다음을 정의했다. 어떻게 이것을 neo4j 설정에 적용 할 수 있습니까?

 #Driver, required
 driver=org.neo4j.ogm.drivers.bolt.driver.BoltDriver

 #URI of the Neo4j database, required. If no port is specified, the          
 #default port 7687 is used. Otherwise, a port can be specified with   
 #bolt://neo4j:password@localhost:1234

 URI=bolt://neo4j:neo4j@localhost

 #Connection pool size (the maximum number of sessions per URL),    
 #optional, defaults to 50

 connection.pool.size=150

 #Encryption level (TLS), optional, defaults to REQUIRED. Valid  
 #values are NONE,REQUIRED

 encryption.level=NONE

위의 변경 사항과 함께 다음과 같은 오류가 발생합니다.

 org.neo4j.ogm.exception.MappingException: No identity field found for class: org.rozzie.processor.models.dao.cassandra.FlightDAO

cassandra 모델에서는 neo4j.ogm 예외가 throw됩니다. 후드 아래에서 무슨 일이 일어나고 있는지. 위와 같이 하나의 프로젝트에서 봄 부팅으로이 두 데이터베이스를 어떻게 구성 할 수 있습니까?

해결법

  1. ==============================

    1.이것은 Spring Boot 자동 설정이 동시에 여러 Spring Data 프로젝트를 처리 할 수없는 것처럼 보입니다.

    이것은 Spring Boot 자동 설정이 동시에 여러 Spring Data 프로젝트를 처리 할 수없는 것처럼 보입니다.

    Spring 데이터 Neo4j 및 Spring 데이터 Cassandra에 대한 설명서를 참조하십시오.

    특히 SDN 모듈을 neo4j 저장소에만 연결해야합니다.

    @EnableNeo4jRepositories(basePackages = "org.test.project.repositories.neo")
    

    마찬가지로 카산드라도 마찬가지입니다.

  2. ==============================

    2.나는 neo4j를 mongo와 함께 사용했다. 나는 어떤 문제도 보지 않는다. 나는 그것이 카산드라와 동일해야한다고 생각합니다. 이것이 내가 가지고있는 모든 구성입니다.

    나는 neo4j를 mongo와 함께 사용했다. 나는 어떤 문제도 보지 않는다. 나는 그것이 카산드라와 동일해야한다고 생각합니다. 이것이 내가 가지고있는 모든 구성입니다.

    @SpringBootApplication
    @EnableConfigurationProperties
    @EnableNeo4jRepositories("com.in.neo4j.repository.neo")
    @EnableMongoRepositories("com.in.neo4j.repository.mongo")
    public class Neo4JApplication {
        public static void main(String[] args) {
            SpringApplication.run(Neo4JApplication.class, args);
        }
    }
    

    그리고 내 속성 파일에서

    spring.data.neo4j.username=neo4j  
    spring.data.neo4j.password=admin  
    
    spring.data.mongodb.database=blah  
    spring.data.mongodb.host=blahblah  
    spring.data.mongodb.port=27017
    
  3. from https://stackoverflow.com/questions/44033599/how-to-configure-neo4j-and-cassandra-repositories-in-same-spring-boot-applicatio by cc-by-sa and MIT license