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


}
  
呵呵
原文地址:https://www.cnblogs.com/jiazhiyuan/p/13566095.html