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();
   }


}
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM