在 MongoDB 启动前设置 Flapdoodle 的下载代理
在基于 transition 的 Flapdoodle 配置中自定义 DownloadPackage,并注意热缓存可能会绕过代理路径。
如果启动时在获取 MongoDB 归档文件的过程中失败,请配置 Flapdoodle 的包下载器。HTTP 代理列表可以为公网下载线路提供候选端点。此时数据库客户端尚未建立后续连接。
现代基于 transition 的自定义方式通过 DownloadPackage 提供代理:
Mongod mongod = new Mongod() {
@Override
public DownloadPackage downloadPackage() {
return DownloadPackage.withDefaults()
.withDownloadConfig(DownloadConfig.defaults()
.withProxyFactory(() -> Proxys.httpProxy("proxy.example", 8080)));
}
};使用所选 Flapdoodle MongoDB 与 embedded-process 库中的类,然后在应用或测试配置中使用这个自定义的 Mongod。lambda 负责提供 HTTP 代理;归档 URL 仍是下载目标。
缓存命中时的成功启动不会实际经过该代理。包的 transition 流程会先检查下载缓存,因此在评估启动结果时,要把缓存命中与真正的归档下载区分开。
该模式属于 transition API。较早的 RuntimeConfig 构建器以及 Spring Boot 以前的 DownloadConfigBuilderCustomizer 使用不同的自定义与缓存布局接口;请让示例与应用中的依赖版本相匹配。