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]