【发布时间】:2025-12-28 06:30:14
【问题描述】:
要求是在spring boot项目中在运行时修改mongodb连接的密码。例如,假设在使用密码“xyz”启动应用程序时建立了 mongodb 连接。我想在运行时通过点击 api 来修改密码。 到目前为止,我已尝试以下解决方案来解决此问题:
- 在运行时替换 mongoTemplate bean:尝试在运行时使用新密码创建一个新的 mongoTemplate Bean,并使用以下link 中给出的方法在上下文中替换它。这种方法的问题是 bean 只刷新一次。理想情况下,每次调用更新密码的 api 时它都应该工作。
- 在 mongoCredentials 中更新密码: 一种明显的方法是直接在 mongoCredentials 中更新密码,因为 mongoTemplate 使用 mongoCredential 类来存储凭据信息。但问题是 MongoCredentials 类中的密码字段是 'final static' 所以即使有反射我们也不能更新它。尽管有一些技巧可以更新 final 静态字段,但我正在寻找更可接受的解决方案。
【问题讨论】:
标签: spring mongodb spring-boot mongotemplate mongorepository