亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot-mongodb如何實現多數據源配置

發布時間:2021-07-08 11:21:59 來源:億速云 閱讀:1035 作者:小新 欄目:編程語言

這篇文章主要介紹springboot-mongodb如何實現多數據源配置,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在日常工作中,我們可能需要連接多個MongoDB數據源,比如用戶庫user,日志庫log。本章我們來記錄連接多個數據源的步驟,以兩個數據源為例,多個數據源類推。

1、pom.xml中引入mongodb的依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-autoconfigure</artifactId>
  <version>RELEASE</version>
</dependency>

Lombok - 是一個可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的工具,通過使用對應的注解,可以在編譯源碼的時候生成對應的方法。簡單試了以下這個工具還挺好玩的,加上注解我們就不用手動寫 getter\setter、構建方式類似的代碼了。

2, yml配置:

mongodb:
 primary:
  host: 192.168.9.60
  port: 20000
  database: test
 secondary:
  host: 192.168.9.60
  port: 20000
  database: test1

3, 配置2個庫的數據源:

@Data
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

  private MongoProperties primary = new MongoProperties();
  private MongoProperties secondary = new MongoProperties();
}

3.1) 第一個庫封裝:

@Configuration
@EnableMongoRepositories(basePackages = "com.neo.model.repository.primary",
    mongoTemplateRef = PrimaryMongoConfig.MONGO_TEMPLATE)
public class PrimaryMongoConfig {

  protected static final String MONGO_TEMPLATE = "primaryMongoTemplate";
}

3.2) 第二個庫封裝 :

@Configuration
@EnableMongoRepositories(basePackages = "com.neo.model.repository.secondary",
    mongoTemplateRef = SecondaryMongoConfig.MONGO_TEMPLATE)
public class SecondaryMongoConfig {

  protected static final String MONGO_TEMPLATE = "secondaryMongoTemplate";
}

3.3) mongoTemplate:

@Configuration
public class MultipleMongoConfig {

  @Autowired
  private MultipleMongoProperties mongoProperties;

  @Primary
  @Bean(name = PrimaryMongoConfig.MONGO_TEMPLATE)
  public MongoTemplate primaryMongoTemplate() throws Exception {
    return new MongoTemplate(primaryFactory(this.mongoProperties.getPrimary()));
  }

  @Bean
  @Qualifier(SecondaryMongoConfig.MONGO_TEMPLATE)
  public MongoTemplate secondaryMongoTemplate() throws Exception {
    return new MongoTemplate(secondaryFactory(this.mongoProperties.getSecondary()));
  }

  @Bean
  @Primary
  public MongoDbFactory primaryFactory(MongoProperties mongo) throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
        mongo.getDatabase());
  }

  @Bean
  public MongoDbFactory secondaryFactory(MongoProperties mongo) throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
        mongo.getDatabase());
  }
}

4, 創建2個庫對應的repository:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "first_mongo")
public class PrimaryMongoObject {

  @Id
  private String id;

  private String value;

  @Override
  public String toString() {
    return "PrimaryMongoObject{" + "id='" + id + '\'' + ", value='" + value + '\''
        + '}';
  }
}
public interface PrimaryRepository extends MongoRepository<PrimaryMongoObject, String> {
}

測試:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MuliDatabaseTest {

  @Autowired
  private PrimaryRepository primaryRepository;

  @Autowired
  private SecondaryRepository secondaryRepository;

  @Test
  public void TestSave() {

    System.out.println("************************************************************");
    System.out.println("測試開始");
    System.out.println("************************************************************");

    this.primaryRepository
        .save(new PrimaryMongoObject(null, "第一個庫的對象"));

    this.secondaryRepository
        .save(new SecondaryMongoObject(null, "第二個庫的對象"));

    List<PrimaryMongoObject> primaries = this.primaryRepository.findAll();
    for (PrimaryMongoObject primary : primaries) {
      System.out.println(primary.toString());
    }

    List<SecondaryMongoObject> secondaries = this.secondaryRepository.findAll();

    for (SecondaryMongoObject secondary : secondaries) {
      System.out.println(secondary.toString());
    }

    System.out.println("************************************************************");
    System.out.println("測試完成");
    System.out.println("************************************************************");
  }

}

以上是“springboot-mongodb如何實現多數據源配置”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高邑县| 衡水市| 南宁市| 台江县| 卢氏县| 中宁县| 祁门县| 离岛区| 西乌珠穆沁旗| 华坪县| 怀柔区| 永康市| 陆河县| 红原县| 灵台县| 和静县| 邢台县| 佛学| 黔东| 米林县| 清新县| 崇仁县| 根河市| 彰化县| 澄迈县| 吉首市| 靖安县| 于田县| 许昌市| 杭锦旗| 怀集县| 满城县| 上蔡县| 左云县| 博兴县| 扎囊县| 庆安县| 浮梁县| 贵州省| 香格里拉县| 太仓市|