欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot-mongodb的多數(shù)據(jù)源配置的方法步驟

 更新時間:2019年04月25日 11:17:08   作者:bronk  
這篇文章主要介紹了springboot-mongodb的多數(shù)據(jù)源配置的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

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代碼的工具,通過使用對應(yīng)的注解,可以在編譯源碼的時候生成對應(yīng)的方法。簡單試了以下這個工具還挺好玩的,加上注解我們就不用手動寫 getter\setter、構(gòu)建方式類似的代碼了。

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個庫的數(shù)據(jù)源:

@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, 創(chuàng)建2個庫對應(yīng)的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("************************************************************");
  }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis批量更新報錯問題

    Mybatis批量更新報錯問題

    這篇文章主要介紹了Mybatis批量更新報錯的問題及解決辦法,包括mybatis批量更新的兩種方式,需要的的朋友參考下
    2017-01-01
  • Java 詳解異常的處理機制

    Java 詳解異常的處理機制

    異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的。比如你的代碼少一個分號,那運行出來結(jié)果是提示是錯誤 java.lang.Error;如果你用System.out.println(11/0),那你是因為用0做了除數(shù),會拋出 java.lang.ArithmeticException 的異常
    2021-11-11
  • 深入同步訪問共享的可變數(shù)據(jù)分析

    深入同步訪問共享的可變數(shù)據(jù)分析

    本篇文章是對同步訪問共享的可變數(shù)據(jù)進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Spring Boot深入分析講解日期時間處理

    Spring Boot深入分析講解日期時間處理

    項目中使用LocalDateTime系列作為DTO中時間的數(shù)據(jù)類型,但是SpringMVC收到參數(shù)后總報錯,為了配置全局時間類型轉(zhuǎn)換,嘗試了如下處理方式
    2022-06-06
  • PowerJob的Evaluator方法工作流程源碼解讀

    PowerJob的Evaluator方法工作流程源碼解讀

    這篇文章主要介紹了PowerJob的Evaluator方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Java編程打印購物小票實現(xiàn)代碼

    Java編程打印購物小票實現(xiàn)代碼

    這篇文章主要介紹了Java編程打印購物小票實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • ConcurrentMap.putIfAbsent(key,value)用法實例

    ConcurrentMap.putIfAbsent(key,value)用法實例

    這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實例,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java 給PPT添加動畫效果的示例

    Java 給PPT添加動畫效果的示例

    這篇文章主要介紹了Java 給PPT添加動畫效果的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • java操作hdfs的方法示例代碼

    java操作hdfs的方法示例代碼

    這篇文章主要介紹了java操作hdfs的相關(guān)資料,在本地配置Hadoop和Maven的環(huán)境變量,首先需從官網(wǎng)下載與服務(wù)器相同版本的Hadoop安裝包,配置環(huán)境變量后,引入Maven的配置文件,以便管理項目依賴,最后,編寫代碼實現(xiàn)對HDFS的連接和操作,完成數(shù)據(jù)的讀寫,需要的朋友可以參考下
    2022-02-02
  • Spring Security如何基于Authentication獲取用戶信息

    Spring Security如何基于Authentication獲取用戶信息

    這篇文章主要介紹了Spring Security如何基于Authentication獲取用戶信息,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03

最新評論