Spring-Data-Mongodb資料庫連線程式碼示例
Spring-Data-Mongodb資料庫連線程式碼示例
作為一名合格的程式設計師,除了要考慮需求的功能性實現之外,一定還要注意程式的健壯性,同時對於有運維經驗的程式設計師來說,還要關注程式的安全性。年前鬧得沸沸揚揚的Mongodb
贖金事件想必給很多程式設計師敲了個警鐘!其實當時我也中招了,手頭個人的和公司的專案都使用的Mongodb
,還好沒有造成什麼損失。對於伺服器安全來說,稍微注意一點其實就可用避免百分之八九十的惡意估計,比如說:不使用預設埠、不使用簡單密碼、設定防火牆規則、資料庫設定密碼、使用nginx代理掩蓋埠等等。總之,不應該抱著僥倖心理,不要偷懶!閒話不多說了,下面在Spring-Boot
下連線Mongodb
的簡單示例程式碼,其功能包括:
1.使用使用者名稱/密碼;
2.設定主從備份資料庫連線。
需要注意的是,不同的mongo-java-dirver
版本所支援的加密方式略有區別,我這裡使用的是3.2.0
,低於3.0.0
版本的可能不支援Sha1
的加密方式。
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
@Configuration
public class MongoConfiguration extends AbstractMongoConfiguration {
@Value("${db.mongo.host}") private String mongoHost;
@Value("${db.mongo.host2}") private String mongoHost2;
@Value("${db.mongo.username}") private String mongoUsername;
@Value("${db.mongo.password}") private String mongoPassword;
@Value("${db.mongo.port}") private int mongoPort;
@Value("${db.mongo.database}") private String mongoDatabase;
@Value("${debug}") private boolean isDebug = false;
@Override
protected String getDatabaseName() {
return mongoDatabase;
}
@Override @Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), getDatabaseName());
}
@Override @Bean
public Mongo mongo() throws Exception {
// 構建主備資料庫Seed列表
List<ServerAddress> seedList = new ArrayList<ServerAddress>();
ServerAddress seed1 = new ServerAddress(mongoHost, mongoPort);
ServerAddress seed2 = new ServerAddress(mongoHost2, mongoPort);
seedList.add(seed1);
seedList.add(seed2);
// 構建鑑權資訊,賬號驗證資料庫名與資料庫名一致
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(MongoCredential.createScramSha1Credential(mongoUsername,
getDatabaseName(), mongoPassword.toCharArray()));
// 構建操作選項,requiredReplicaSetName屬性外的選項根據自己的實際需求配置,預設引數滿足大多數場景
MongoClientOptions options = MongoClientOptions.builder()
.serverSelectionTimeout(3000)
.socketTimeout(2000)
.connectionsPerHost(10)
.build();
MongoClient client = null;
if(isDebug) {
client = new MongoClient(mongoHost, mongoPort);
} else {
client = new MongoClient(seedList, credentials, options);
}
return client;
}
}
相關文章
- MySql連線資料庫常用引數及程式碼示例MySql資料庫
- (轉)PHP連線資料庫之PHP連線MYSQL資料庫程式碼PHP資料庫MySql
- Kettle資料庫資源庫連線執行示例資料庫
- 一個非常標準的連線Mysql資料庫的示例程式碼MySql資料庫
- 各種資料庫連線程式碼(JSP)資料庫線程JS
- Python連線資料庫程式碼結構Python資料庫
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- java開發中JDBC連線資料庫程式碼JavaJDBC資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 連線資料庫資料庫
- 資料庫連線資料庫
- EF6連線GBase8s資料庫示例資料庫
- 連線資料庫的ASP樹圖生成程式(原始碼) (轉)資料庫原始碼
- 將連線資料庫的程式碼隱藏在DLL中(轉)資料庫
- JDBC連線資料庫JDBC資料庫
- java連線資料庫Java資料庫
- Mybatis連線資料庫MyBatis資料庫
- Mongodb資料庫連線MongoDB資料庫
- mysqli連線資料庫MySql資料庫
- 資料庫的連線資料庫
- 連線mysql資料庫MySql資料庫
- 資料庫連線池資料庫
- 資料庫連線==odbc資料庫
- 資料庫連線字串資料庫字串
- jmeter連線資料庫JMeter資料庫
- 連線資料庫-mysql資料庫MySql
- java開發中JDBC連線資料庫程式碼和步驟JavaJDBC資料庫
- java 資料庫程式設計(一)JDBC連線Sql Server資料庫Java資料庫程式設計JDBCSQLServer
- 資料來源連線資料庫資料庫
- [資料庫連線字串] Access 連線字串(轉)資料庫字串
- [資料庫連線字串]Access連線字串(轉)資料庫字串
- 各種連線資料庫的連線字串資料庫字串
- django | 連線mysql資料庫DjangoMySql資料庫
- Rust 連線 PostgreSQL 資料庫RustSQL資料庫
- PHP 連線access資料庫PHP資料庫
- Mybatis配置資料庫連線MyBatis資料庫
- 資料庫連線池原理資料庫