Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用spring数据mongodb在Java中创建mongodb数据库用户_Java_Mongodb_Spring Boot_Spring Data_Spring Data Mongodb - Fatal编程技术网

使用spring数据mongodb在Java中创建mongodb数据库用户

使用spring数据mongodb在Java中创建mongodb数据库用户,java,mongodb,spring-boot,spring-data,spring-data-mongodb,Java,Mongodb,Spring Boot,Spring Data,Spring Data Mongodb,我需要使用SpringDataMongoDB在SpringBoot应用程序中创建一个mongodb数据库用户。我将创建此用户作为应用程序启动的一部分。 我找不到任何使用SpringDataMongoDB进行此操作的参考。 使用Spring data mongodb是否可能实现这一点?我过去也遇到过同样的问题,最后在加载上下文之前创建了用户,如下所示: @Configuration @EnableAutoConfiguration @ComponentScan public class Appli

我需要使用SpringDataMongoDB在SpringBoot应用程序中创建一个mongodb数据库用户。我将创建此用户作为应用程序启动的一部分。 我找不到任何使用SpringDataMongoDB进行此操作的参考。
使用Spring data mongodb是否可能实现这一点?

我过去也遇到过同样的问题,最后在加载上下文之前创建了用户,如下所示:

@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);
    }
}
@配置
@启用自动配置
@组件扫描
公共类应用程序扩展了SpringBootServletInitializer{
@抑制警告(“资源”)
公共静态void main(最终字符串[]args){
createMongoDbUser();
ConfigurableApplicationContext上下文=SpringApplication.run(Application.class,args);
}
私有void createMongoDbUser(){
MongoClient mongo=新的MongoClient(主机、端口);
MongoDatabase db=mongo.getDatabase(db);
Map commandArguments=new BasicDBObject();
commandArguments.put(“createUser”,用户名);
commandArguments.put(“pwd”,USER_pwd);
字符串[]角色={“读写”};
commandArguments.put(“角色”,角色);
BasicDBObject命令=新的BasicDBObject(commandArguments);
db.runCommand(command);
}
}

Spring data mongodb在声明您的mongo db工厂时,如果找不到数据库,它将自己创建数据库

例如,我使用以下内容在xml中声明我的db工厂:

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


我不必自己创建它,它是由spring data mongodb在第一次启动may app时创建的。

为什么不能直接在mongo中创建用户并让spring boot使用该用户。。。