簡體   English   中英

MacWire:找到多個類型的值

[英]MacWire: Found multiple values of type

我正在使用MacWire DI框架,但出現此錯誤。

Found multiple values of type [play.api.mvc.DefaultActionBuilder]: [List(defaultActionBuilder, Action)]
[error]   override lazy val controllerComponents: DefaultControllerComponents = wire[DefaultControllerComponents]

我的應用程序加載器是這樣的:

class AppApplicationLoader extends ApplicationLoader {
  def load(context: Context) = {
    LoggerConfigurator(context.environment.classLoader).foreach { cfg =>
      cfg.configure(context.environment)
    }
    new AppComponents(context).application
  }
}

 class AppComponents(context: Context) extends
      BuiltInComponentsFromContext(context) with AhcWSComponents
      with AssetsComponents with HttpFiltersComponents
      with EvolutionsComponents with DBComponents  with HikariCPComponents  with EhCacheComponents {

      override lazy val controllerComponents: DefaultControllerComponents = wire[DefaultControllerComponents]

在對代碼進行少量修改之后,我得到了其他一些類似的錯誤。 如何遵循DI依賴關系來跟蹤這些錯誤?

我本人剛遇到此問題,似乎是由於此提交,在Play 2.6.3中作為反向端口包括在內:

https://github.com/playframework/playframework/pull/7676/files/809cd1e880b01d45e95d41e65f20bfa984d1e122#r138400765

...因此在Play 2.6.2中編譯的代碼在Play 2.6.3中失敗。

解決方法:

  • 恢復至播放2.6.2,或...
  • ...手動指定DefaultControllerComponents的創建-即不要將MacWire用於該特定構造函數

那不是很漂亮,但可以在Play 2.6.3中使用:

val defaultControllerComponents = new DefaultControllerComponents(
  defaultActionBuilder,
  playBodyParsers,
  messagesApi,
  langs,
  fileMimeTypes,
  executionContext
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM