我们正在使用Micronaut构建网络应用程序。该应用需要凭据才能连接到Managed MongoDB服务。我从documentation看到,可以使用下面给出的application.xml
属性来完成此操作,
mongodb:
uri: mongodb://username:password@localhost:27017/databaseName
但是,这里凭据被保留为配置属性本身的一部分。
在我们的方案中,凭据存储在加密存储中,需要先进行读取,然后才能建立与MongoDB的连接。
是否可以在MongoClient实例化期间注入凭据,以便可以将注入的凭据用于连接到Managed MongoDB实例?
我们正在使用micronaut-mongo-reactive
客户端。
答案 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!