• 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();
       }
    
    
    }
      
    呵呵
  • 相关阅读:
    解决跨操作系统平台JSON中文乱码问题
    httpencode编码
    DELPHI搭建centos开发环境
    cross socket和msgpack的数据序列和还原
    libmidas.so.2
    开发WINDOWS服务程序
    idhttp访问DATASNAP有密码验证的中间件
    接口操作XML
    HttpApplication中的异步线程
    Assembly类
  • 原文地址:https://www.cnblogs.com/jiazhiyuan/p/13566095.html
Copyright © 2020-2023  润新知