Создание пользователя базы данных mongodb на Java с помощью spring data mongodb

Мне нужно создать пользователя базы данных mongodb в приложении Spring boot с помощью spring data mongodb. Я буду создавать этого пользователя в рамках запуска приложения.
Я не мог найти никакой ссылки для этого, используя spring data mongodb.
Возможно ли это с помощью Spring data mongodb?

2 ответа

  1. У меня была та же проблема в прошлом, и я в конечном итоге создаю пользователя перед загрузкой контекста, как это:

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan
    public class Application extends SpringBootServletInitializer {
    
        @SuppressWarnings("resource")
        public static void main(final String[] args) {
            createMongoDbUser();
    
            ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
        }
    
        private void createMongoDbUser() {
            MongoClient mongo = new MongoClient(HOST, PORT);
            MongoDatabase db =  mongo.getDatabase(DB);
            Map<String, Object> commandArguments = new BasicDBObject();
            commandArguments.put("createUser", USER_NAME);
            commandArguments.put("pwd", USER_PWD);
            String[] roles = { "readWrite" };
            commandArguments.put("roles", roles);
            BasicDBObject command = new BasicDBObject(commandArguments);
            db.runCommand(command);
        }
    }
    
  2. Spring-data-mongodb создаст БД самостоятельно, если не сможет ее найти, при объявлении вашей фабрики mongo-db.

    Например, я объявляю свою db-factory в xml, используя следующее:

    <mongo:db-factory id="mongofactory" dbname="dbNameHere" mongo-ref="mongo" />
    

    Я не должен был создавать его сам, он был создан spring-data-mongodb при запуске may app в первый раз.