阿未 發表於 2019-6-27 10:25:00

SpringBoot配置MongoDB多数剧源

<h2 id="关闭mongo的自动化配置">关闭Mongo的自动化配置</h2>
<p>因为项目需要配置<code>MongoDB</code>多数据源.<br>
为了避免<code>Spring boot</code>自动化配置带来的影响,因此通过注解屏蔽<code>MongoDB</code>的<code>自动化配置</code>.</p>
<pre><code class="language-java">@SpringBootApplication(exclude =
      {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
public class StatApplication {

    public static void main(String[] args) {

      SpringApplication.run(StatApplication.class, args);
    }
}
</code></pre>
<h2 id="配置文件">配置文件</h2>
<p>个人倾向于使用<code>uri</code>方式初始化<code>MongoClient</code>,配置如下所示:</p>
<pre><code class="language-shell">mongodb:
meta:
    uri: mongodb://*:27017/admin?maxPoolSize=64
stat:
    uri: mongodb://*:27017/stat?maxPoolSize=64
</code></pre>
<h2 id="配置代码">配置代码</h2>
<pre><code class="language-java">@Data
@Configuration
public class MorphiaConfig {

    @Value("${mongodb.meta.uri}")
    private String metaUri;

    @Value("${mongodb.stat.uri}")
    private String statUri;

    @Bean("metaMongoClient")
    public MongoClient metaMongoClient() {
      final MongoClientOptions.Builder builder = MongoClientOptions.builder()
                .maxConnectionIdleTime(6000)
                .maxConnectionLifeTime(0);
      return new MongoClient(new MongoClientURI(metaUri, builder));
    }

    @Bean("statMongoClient")
    public MongoClient statMongoClient() {
      final MongoClientOptions.Builder builder = MongoClientOptions.builder()
                .maxConnectionIdleTime(6000)
                .maxConnectionLifeTime(0);
      return new MongoClient(new MongoClientURI(statUri, builder));
    }

    @Bean("metaDataStore")
    public Datastore metaDataStore(@Autowired @Qualifier("metaMongoClient") MongoClient mongoClient) {
      Morphia res = new Morphia();
      // 扫描实体类
      res.mapPackage("com.*.*.entity.meta");
      Datastore datastore = res.createDatastore(mongoClient, "metadata");
      // 建立索引
      datastore.ensureIndexes();
      return datastore;
    }

    @Bean("statDataStore")
    public Datastore statDataStore(@Autowired @Qualifier("statMongoClient") MongoClient mongoClient) {
      Morphia res = new Morphia();
      // 扫描实体类
      res.mapPackage("com.*.*.entity.stat");
      Datastore datastore = res.createDatastore(mongoClient, "stat");
      // 建立索引
      datastore.ensureIndexes();
      return datastore;
    }
}
</code></pre>
<p>通过以上代码,就可以建立两个独立的<code>Datastore</code>对象,可以通过对应的<code>Bean name</code>进行引入.</p>
<blockquote>
<p>PS:<br>
如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!<br>
<img src="https://img2018.cnblogs.com/blog/764719/201910/764719-20191017123633925-2038306954.jpg"></p>
</blockquote><br><br>
来源:https://www.cnblogs.com/jason1990/p/11095530.html
頁: [1]
查看完整版本: SpringBoot配置MongoDB多数剧源