복붙노트

[SPRING] Spring : 하나의 Entity에서 2 개의 저장소

SPRING

Spring : 하나의 Entity에서 2 개의 저장소

내가 필요한 것은 단일 실체에서 생성 된 2 개의 리파지토리입니다 :

interface TopicRepository implements ReactiveCrudRepository<Topic, String>

interface BackupTopicRepository implements ReactiveCrudRepository<Topic, String>

어떻게 가능할까요? 지금은 하나만 생성됩니다.

해결법

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

    1.이것이 당신이하는 방법입니다.

    이것이 당신이하는 방법입니다.

    @Configuration
    @ConfigurationProperties(prefix = "mongodb.topic")
    @EnableMongoRepositories(basePackages = "abc.def.repository.topic", mongoTemplateRef = "topicMongoTemplate")
    @Setter
    class TopicMongoConfig {
    
        private String host;
        private int port;
        private String database;
    
        @Primary
        @Bean(name = "topicMongoTemplate")
        public MongoTemplate topicMongoTemplate() throws Exception {
            final Mongo mongoClient = createMongoClient(new ServerAddress(host, port));
            return new MongoTemplate(mongoClient, database);
        }
    
         private Mongo createMongoClient(ServerAddress serverAddress) {
            return new MongoClient(serverAddress);
        }
    }
    

    다른 구성

    @Configuration
    @ConfigurationProperties(prefix = "mongodb.backuptopic")
    @EnableMongoRepositories(basePackages = "abc.def.repository.backuptopic", mongoTemplateRef = "backupTopicMongoTemplate")
    @Setter
    class BackupTopicMongoConfig {
    
        private String host;
        private int port;
        private String database;
    
        @Primary
        @Bean(name = "backupTopicMongoTemplate")
        public MongoTemplate backupTopicMongoTemplate() throws Exception {
            final Mongo mongoClient = createMongoClient(new ServerAddress(host, port));
            return new MongoTemplate(mongoClient, database);
        }
    
         private Mongo createMongoClient(ServerAddress serverAddress) {
            return new MongoClient(serverAddress);
        }
    }
    

    TopicRepository 및 BackuoTopicRepository는 각각 abc.def.repository.topic 및 abc.def.repository.backuptopic에 있어야합니다.

    또한 속성이나 yml 파일에 이러한 속성을 정의해야합니다.

    mongodb: 
       topic:
         host:
         database:
         port:
       backuptopic:
         host:
         database:
         port:
    

    마지막으로 mongo에 대한 springboot 자동 구성을 비활성화합니다.

    @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
    
  2. from https://stackoverflow.com/questions/48770121/spring-2-repositories-out-of-a-single-entity by cc-by-sa and MIT license