最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在日常工作中,我們可能需要連接多個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代碼的工具,通過使用對應的注解,可以在編譯源碼的時候生成對應的方法。簡單試了以下這個工具還挺好玩的,加上注解我們就不用手動寫 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個庫對應的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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Tomcat集群和Session復制應用介紹

    Tomcat集群和Session復制應用介紹

    本文將詳細介紹Tomcat集群和Session復制應用,需要了解的朋友可以參考下
    2012-11-11
  • Java 對 Cookie增刪改查的實現(xiàn)示例

    Java 對 Cookie增刪改查的實現(xiàn)示例

    這篇文章主要介紹了Java 對 Cookie增刪改查的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Mybatis分解式查詢使用方法

    Mybatis分解式查詢使用方法

    這篇文章主要介紹了Mybatis分解式查詢使用方法,分解式查詢就是將一條Sql語句拆分成多條。在 MyBatis 多表查詢中,使用連接查詢時一個 Sql 語句就可以查詢出所有的數(shù)據(jù)
    2023-04-04
  • SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼

    SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼

    這篇文章主要介紹了SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java后端對接微信支付(小程序、APP、PC端掃碼)包含查單退款

    Java后端對接微信支付(小程序、APP、PC端掃碼)包含查單退款

    微信支付我們主要聚焦于這三種支付方式,其中JSPAI與APP主要與uniapp開發(fā)微信小程序與APP對接,本文主要介紹了Java后端對接微信支付(小程序、APP、PC端掃碼)包含查單退款,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • java編程數(shù)據(jù)類型全面詳解教程新手必入

    java編程數(shù)據(jù)類型全面詳解教程新手必入

    這篇文章主要為大家介紹了java編程數(shù)據(jù)類型全面詳解教程,強烈推薦新手入,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Mybatis-plus中IService接口的基本使用步驟

    Mybatis-plus中IService接口的基本使用步驟

    Mybatis-plus是一個Mybatis的增強工具,它提供了很多便捷的方法來簡化開發(fā),IService是Mybatis-plus提供的通用service接口,封裝了常用的數(shù)據(jù)庫操作方法,包括增刪改查等,下面這篇文章主要給大家介紹了關(guān)于Mybatis-plus中IService接口的基本使用步驟,需要的朋友可以參考下
    2023-06-06
  • Spring框架的ImportSelector詳細解讀

    Spring框架的ImportSelector詳細解讀

    這篇文章主要介紹了Spring框架的ImportSelector詳細解讀,Spring中一個非常重要的注解@Import中的ImportSelector接口的作用以及它到底有啥作用,也會捎帶一部分源碼說一下DeferredImportSelector是干啥的,需要的朋友可以參考下
    2024-01-01
  • 基于SpringAI+DeepSeek實現(xiàn)流式對話功能

    基于SpringAI+DeepSeek實現(xiàn)流式對話功能

    一般來說大模型的響應速度通常是很慢的,為了避免用戶用戶能夠耐心等待輸出的結(jié)果,我們通常會使用流式輸出一點點將結(jié)果輸出給用戶,那么問題來了,想要實現(xiàn)流式結(jié)果輸出,后端和前端要如何配合?下來本文給出具體的實現(xiàn)代碼,需要的朋友可以參考下
    2025-02-02
  • Maven遠程倉庫地址修改實現(xiàn)解析

    Maven遠程倉庫地址修改實現(xiàn)解析

    這篇文章主要介紹了Maven遠程倉庫地址修改實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論

惠州市| 陆川县| 太湖县| 宁乡县| 淮阳县| 哈尔滨市| 陈巴尔虎旗| 禄丰县| 威宁| 栖霞市| 曲靖市| 鲁山县| 治县。| 平昌县| 凯里市| 柳州市| 西贡区| 阿克陶县| 新乡市| 漯河市| 静宁县| 裕民县| 易门县| 达孜县| 双牌县| 托里县| 仙桃市| 新邵县| 长宁区| 通渭县| 汉寿县| 乌拉特前旗| 沙洋县| 页游| 夹江县| 青田县| 陆河县| 浑源县| 临邑县| 沾化县| 从江县|