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