【发布时间】:2018-03-05 14:23:17
【问题描述】:
在旧项目上,我们正在尝试升级 Play!到 2.6 版本,我们无法启用循环代理。
之前(在 Play!2.5 中),可以在 GuiceInjectorBuilder 上调用 disableCircularProxies(false),但现在没有这样的方法。
如何解决这个问题?
【问题讨论】:
标签: java playframework guice
在旧项目上,我们正在尝试升级 Play!到 2.6 版本,我们无法启用循环代理。
之前(在 Play!2.5 中),可以在 GuiceInjectorBuilder 上调用 disableCircularProxies(false),但现在没有这样的方法。
如何解决这个问题?
【问题讨论】:
标签: java playframework guice
在当前的解决方案中,我在我们的 Java 项目中使用了 Scala API,因为那里仍然有 disableCircularProxies 可用。
class CustomApplicationLoader extends GuiceApplicationLoader() {
override def builder(context: ApplicationLoader.Context): GuiceApplicationBuilder = {
initialBuilder
.disableCircularProxies(false)
.in(context.environment)
.loadConfig(context.initialConfiguration)
.overrides(overrides(context): _*)
}
}
在 application.conf 中
play.application.loader = "configuration.api.CustomApplicationLoader"
【讨论】:
我不确定为什么在 2.6.x 中删除了 disableCircularProxies。但是,您可以通过直接调用 withBinderOptions 来解决此问题。 Here'sdisableCircularProxies的2.5.x实现:
final def disableCircularProxies(disable: Boolean = true): Self =
withBinderOption(DisableCircularProxies, disable)
在 2.6.x 中直接调用就可以得到和disableCircularProxies一样的效果:
withBinderOption(DisableCircularProxies, disable)
【讨论】: