1. 程式人生 > 實用技巧 >SpingBoot 啟動自動給MongoDB建庫

SpingBoot 啟動自動給MongoDB建庫

package com.fpi.bmp.devicemanage;

import com.fpi.bmp.devicemanage.utils.Constants;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.yaml.snakeyaml.Yaml; import java.io.InputStream; import
java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; /** * 啟動類 * @author jiazhiyuan * */ @SpringBootApplication public class DeviceManageServerApplication extends SpringBootServletInitializer { private static final Logger logger = LoggerFactory.getLogger(DeviceManageServerApplication.class
); /** * 啟動函式介面 * @param args */ public static void main(String[] args) { SpringApplication.run(DeviceManageServerApplication.class, args); } static { Yaml yaml = new Yaml(); InputStream resourceAsStream = yaml.getClass().getClassLoader().getResourceAsStream("application.yml"); System.out.println(resourceAsStream); Map map = yaml.loadAs(resourceAsStream, Map.class); map = (Map)map.get(Constants.SPRING); map = (Map)map.get(Constants.DATA); map = (Map)map.get(Constants.MONGODB); String host = (String) map.get(Constants.HOST); Integer port = (Integer) map.get(Constants.PORT); String database = (String) map.get(Constants.DATABASE); String username = (String) map.get(Constants.USERNAME); String password = (String) map.get(Constants.PASSWORD); ServerAddress serverAddress = new ServerAddress(host,port); MongoCredential credential = MongoCredential.createCredential("root", database, "laogandie@123456".toCharArray()); List<MongoCredential> mongoCredentialList = new ArrayList<>(); mongoCredentialList.add(credential); //建立連線 MongoClient client = new MongoClient(serverAddress,mongoCredentialList); //建立資料庫 client.getDB(database); //操作資料庫db MongoDatabase db = client.getDatabase(database); Document result = null; BasicDBObject getUsersInfoCommand = new BasicDBObject("usersInfo", new BasicDBObject("user", username).append("db", database)); BasicDBObject dropUserCommand = new BasicDBObject("dropUser",username); BasicDBObject createUserCommand = new BasicDBObject("createUser", username).append("pwd", password).append("roles", Collections.singletonList(new BasicDBObject("role", "dbOwner").append("db", database))); result = db.runCommand(getUsersInfoCommand); ArrayList users = (ArrayList) result.get("users"); if (!users.isEmpty()) { db.runCommand(dropUserCommand); } db.runCommand(createUserCommand); client.close(); } }