使用凭据连接到MongoDB-Micronaut

使用凭据连接到MongoDB-Micronaut,mongodb,micronaut,Mongodb,Micronaut,我们正在使用Micronaut构建一个web应用程序。应用程序需要凭据才能连接到托管MongoDB服务。从中可以看出,这可以使用下面给出的application.xml属性来完成 mongodb: uri: mongodb://username:password@localhost:27017/databaseName 但是,此处凭据作为配置属性本身的一部分进行维护 在我们的场景中,凭据存储在加密存储中,在建立到MongoDB的连接之前,需要先读取这些凭据 是否有方法在MongoCli

我们正在使用Micronaut构建一个web应用程序。应用程序需要凭据才能连接到托管MongoDB服务。从中可以看出,这可以使用下面给出的
application.xml
属性来完成

mongodb:
    uri: mongodb://username:password@localhost:27017/databaseName
但是,此处凭据作为配置属性本身的一部分进行维护

在我们的场景中,凭据存储在加密存储中,在建立到MongoDB的连接之前,需要先读取这些凭据

是否有方法在MongoClient实例化期间注入凭据,以便可以使用注入的凭据连接到托管MongoDB实例


我们使用的是micronaut mongo反应式客户端。

如果这对任何人都有帮助,那么下面的方法可以工作

使用
@替换
注释创建一个新工厂,该注释允许覆盖MongoClient的默认注入。在该类中,从加密存储读取凭据,然后使用相同的凭据构造Mongo连接字符串

@Factory
public class MongoClientFactory {

  private static final FluentLogger logger = FluentLogger.forEnclosingClass();

  @Inject EncryptedStoreService encryptedStoreService;

  @Singleton
  @Bean(preDestroy = "close")
  @Replaces(MongoClient.class)
  public MongoClient mongoClient() {

    MongoClient mongoClient = null;
    try {

    // Formulate a ConnectionString based on data read using the encryptedStoreService

      mongoClient = MongoClients.create(connectionString);

    } catch (IOException e) {
      logger.atSevere().log("Error occured", e);
    }

    return mongoClient;
  }
 } 

爱小人

能否将用户名和密码设置为环境变量?