【问题标题】:Play Framework 2.6 - Allow Guice Circular ProxyingPlay Framework 2.6 - 允许 Guice 循环代理
【发布时间】:2018-03-05 14:23:17
【问题描述】:

在旧项目上,我们正在尝试升级 Play!到 2.6 版本,我们无法启用循环代理。

之前(在 Play!2.5 中),可以在 GuiceInjectorBuilder 上调用 disableCircularProxies(false),但现在没有这样的方法。

如何解决这个问题?

【问题讨论】:

    标签: java playframework guice


    【解决方案1】:

    在当前的解决方案中,我在我们的 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】:

      我不确定为什么在 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)
      

      【讨论】:

      • 在访问 GuiceInjectorBuilder 时,我无法从 Java 访问(或者我没有找到方法)withBinderOption,但我在 Scala API 中解决了这个问题,其中 disableCircularProxies 仍然可用。
      猜你喜欢
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多