使用凭据连接到MongoDB-Micronaut

时间:2019-10-02 23:46:29

标签: mongodb micronaut

我们正在使用Micronaut构建网络应用程序。该应用需要凭据才能连接到Managed MongoDB服务。我从documentation看到,可以使用下面给出的application.xml属性来完成此操作,

mongodb:
    uri: mongodb://username:password@localhost:27017/databaseName

但是,这里凭据被保留为配置属性本身的一部分。

在我们的方案中,凭据存储在加密存储中,需要先进行读取,然后才能建立与MongoDB的连接。

是否可以在MongoClient实例化期间注入凭据,以便可以将注入的凭据用于连接到Managed MongoDB实例?

我们正在使用micronaut-mongo-reactive客户端。

1 个答案:

答案 0 :(得分:1)

如果这可以帮助任何人,请使用以下方法!!

使用@Replaces注释创建一个新的Factory,该工厂允许覆盖MongoClient的默认注入。在此类中,从加密存储中读取凭据,然后使用该凭据制定Mongo Connection String

@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;
  }
 } 

爱Micronaut!