问题标签 [macwire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
533 浏览

scala - 尝试在 Lagom 中注入依赖项时出错

我正在尝试创建一个简单的服务来使用 Lagom 框架和 Scaladsl 发送电子邮件。我正在尝试使用 Play Mailer 插件来处理电子邮件,但我正在努力尝试将其注入服务实现。

mailerClient我创建了服务特征和实现,在构造函数中将其作为依赖项传递。

我按照Lagom 文档和使用 macwire 的 hello world 应用程序中解释的模式在 ApplicationLoader 中连接服务。

当我尝试编译时,出现以下错误。

[错误] /.../workspace/mailer/mailer-impl/src/main/scala/com/example/mailer/impl/MailerApplicationLoader.scala:92:找不到类型的值:[play.api.libs。 mailer.MailerClient]

我认为 macwire 能够从构造函数中整理出依赖关系,但看起来并非如此。我尝试了不同的选项,比如尝试在应用程序加载器中显式连接它,但到目前为止没有任何成功。

我很确定 DI 在 Lagom 中的工作方式有什么问题,但我无法弄清楚。

有任何想法吗?

0 投票
0 回答
307 浏览

scala - Macwire如何连接actorref自身实例

我正在探索适用于 Scala 的 Macwire DI 框架,在此过程中遇到了一个问题。

我有一个调度员演员,它创建了一堆依赖于调度员的演员。Dispatcher 控制其子 Actor 之间的所有消息流。

这是我的设置的简要情况:

在我的真实项目中,WorkerActor 的依赖项不仅仅是一个“自我”。他们可以很容易地接线。

我试过这样做dispatcher: ActorRef @@ Dispatcher,但它给了我错误:

错误:(47, 9) 找不到类型的值:[akka.actor.ActorRef @@ Dispatcher] 线[WorkerActor]

如果我使用 guice,这将像一个魅力:

问题是:如何将“self”添加到 macwire 的范围内?

或者也许我应该使用不同的方法?

谢谢!

0 投票
1 回答
151 浏览

scala - 如何在子类中覆盖 macwire 注射剂

Play Web 框架允许注入“过滤器”列表来对请求(gzip、cors、日志记录等)进行常见处理。

我想要一组通用的这些过滤器(和其他东西)。

子类可以使用哪个

或由子类添加


我尝试过的事情

  1. 上面的代码。不能super与惰性 val 一起使用。
  2. 更改httpFiltersdef. 由于 BuiltInComponents 需要是一个稳定的值
  3. 添加lazy val httpFilters = filtersdef filters: Seq[EssentialFilter] = ...然后filters根据需要覆盖。Macwire 抱怨模棱两可的类型。

我可以做些什么来实现可选附加的过滤器列表?

0 投票
0 回答
274 浏览

scala - 如何使用 macwire 在存储库中注入 ReactiveMongoApi 特征?

我是 Play 框架和所有 Scala 堆栈的新手。我正在尝试使用 macwire 和 ReactiveMongo 来实现依赖注入来处理我的 MongoDB 数据库。

我有这些类来定义存储库。

用户存储库特征:

存储库实现:

我正在尝试通过这样的“wire”方法连接依赖项:

我有一个这样定义的应用程序加载器:

但我得到了错误:

请注意,我已经ReactiveMongoApiFromContext在我的ApplicationLoader.

我还在ReactiveMongoComponents我的存储库中进行扩展,以便能够访问reactiveMongoApi这使我能够访问数据库。那是对的吗?

如何在我的存储库实现中连接 ReactiveMongoApi,以便我可以访问数据库和集合?

0 投票
1 回答
153 浏览

scala - 如何在 Akka 中实现基于 Actor 的 HTTP 路由

我是阿卡的新手。在学习的过程中,我在Github上创建了一个示例项目。本项目在这里使用AkkaAkka-HTTPSlick和。我想为 HTTP 路由实现 Akka Actors。我试图实现这一点,但没有按预期工作。FlywayMacwireredis/

目前Controller正在作为:

但是我正在尝试通过对现有代码进行一些更改来实现类似的功能:

谁能建议我如何实现上述内容?我感谢您的帮助。

0 投票
1 回答
1174 浏览

scala - Macwire、wireWith 和隐式参数

wireWith似乎在解析隐式参数方面存在一些问题。

最小的例子:

错误:

如果implicit在 处省略yVal,则抱怨缺少隐式:

这是一个简化的示例——在我的生产代码中,我尝试连接 Actor 道具:

并得到不同的编译错误:

我尝试过使隐式参数显式化,它工作得很好,除了它有点违背隐式传递执行上下文的通常做法。

我做错了什么还是macwire中的问题?

Github 中的问题:https ://github.com/adamw/macwire/issues/125

0 投票
1 回答
64 浏览

scala - 带有macWire DI的Akka actoreRef,未设置actoreRef

我有 2 个演员,Actor1Actor2. Actor1想要发送MyMsg1Actor2,并且Actor2在做一些工作并得到Future[MyMsg2]想要发送MyMsg2到之后Actor1。我已经以一种方式工作,但它因 DI 而失败。

  1. 场景 1 - 工作场景

    • Actor1 -->MyMsg1-->Actor2
    • Actor2 MyMsgHandler - 处理消息(使用 Future),使用 pipeTo 到发送者MyMsg2。工作正常,Actor1 recvsMyMsg2
  2. 场景 2 - 失败的场景

    • Actor1 有一个通过 MacWire 注入的 bean - myBean
    • myBeanActor2作为 bean 注入MyMsg1并发送到 Actor2
    • Actor2 MyMsgHandler 处理消息(使用 Future),对发送者执行 pipeTo 并尝试发送MyMsg2- 转到 deadLetter。发送者的演员 Ref 永远不会被设置。

我该如何解决?

也粘贴代码

使用我上面共享的当前代码,Actor1能够发送Msg1Actor2 响应actor2Msg2Msg2会进入死信。我收到以下错误 akka.actor.DeadLetterActorRef - Message [backup.failedakka.Msg2] from Actor[akka://application/user/actor2#-662746578] to Actor[akka://application/deadLetters] was not delivered. [1] dead letters encountered.

但是,如果failedService.testSend()在我的 Actor1 中使用该行,我取消注释它下面的行并使用它进行通信,一切正常。Q现在清楚了吗?我正在使用 MacWire 注入依赖项

0 投票
1 回答
361 浏览

scala - 设置,使用编译时依赖注入进行测试,使用 Playframework 2.6 Macwire

在我的项目中,我有这个结构

DefyProducts组件

DefyProductsLoader

家庭控制器

我想设置测试测试,这是test/结构

DefyProductsServerTest

主页控制器规格

我写的这个设置不起作用,我不确定为什么在HomeControllerSpechomeController 中找不到。我知道在测试中所有组件DefyProductsComponents都是可用的,我可以覆盖


更新:我在 github 中创建了一个非常相似的项目。以防万一有人想玩它https://github.com/agusgambina/play-scala-base.git

0 投票
0 回答
24 浏览

playframework-2.6 - 是否可以看到 Macwire 生成的代码

是否可以看到wire宏生成的代码是什么

在上面的示例中,我想知道DefaultSecuredRequestHandler创建时传递了哪些参数。DefaultSecuredRequestHandler不是我的课。它是Silhouette图书馆的一部分。

我正在尝试创建一个实例,DefaultSecuredRequestHandler我需要传递BodyParser.Default给它,但我不知道从哪里得到它。但是,我在网上找到了一些代码,我们使用 Macwire 创建DefaultSecuredRequestHandler. 因此,我想知道是如何DefaultSecuredRequestHandler创建的。

0 投票
1 回答
62 浏览

scala - Play 子项目是否需要每个带有 Macwire 的 ApplicationLoader?

给定以下子项目集: Play subproject can't import Play-json classes

每个项目是否都需要一个独立的ApplicationLoader?例如对于api模块,我应该创建 ApiApplicationLoader,对于父项目,我是否也应该创建 BackendApplicationLoader。

考虑到父项目对于开发目的很有用,但是在部署每个模块 Api 时,报告和 CMS 可能会部署在不同的服务器中。但是,核心模块应该是共享的,这是否意味着在这种情况下。不需要 CoreApplicationLoader?