问题标签 [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.
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 中的工作方式有什么问题,但我无法弄清楚。
有任何想法吗?
scala - Macwire如何连接actorref自身实例
我正在探索适用于 Scala 的 Macwire DI 框架,在此过程中遇到了一个问题。
我有一个调度员演员,它创建了一堆依赖于调度员的演员。Dispatcher 控制其子 Actor 之间的所有消息流。
这是我的设置的简要情况:
在我的真实项目中,WorkerActor 的依赖项不仅仅是一个“自我”。他们可以很容易地接线。
我试过这样做dispatcher: ActorRef @@ Dispatcher
,但它给了我错误:
错误:(47, 9) 找不到类型的值:[akka.actor.ActorRef @@ Dispatcher] 线[WorkerActor]
如果我使用 guice,这将像一个魅力:
问题是:如何将“self”添加到 macwire 的范围内?
或者也许我应该使用不同的方法?
谢谢!
scala - 如何在子类中覆盖 macwire 注射剂
Play Web 框架允许注入“过滤器”列表来对请求(gzip、cors、日志记录等)进行常见处理。
我想要一组通用的这些过滤器(和其他东西)。
子类可以使用哪个
或由子类添加
我尝试过的事情
- 上面的代码。不能
super
与惰性 val 一起使用。 - 更改
httpFilters
为def
. 由于 BuiltInComponents 需要是一个稳定的值 - 添加
lazy val httpFilters = filters
,def filters: Seq[EssentialFilter] = ...
然后filters
根据需要覆盖。Macwire 抱怨模棱两可的类型。
我可以做些什么来实现可选附加的过滤器列表?
scala - 如何使用 macwire 在存储库中注入 ReactiveMongoApi 特征?
我是 Play 框架和所有 Scala 堆栈的新手。我正在尝试使用 macwire 和 ReactiveMongo 来实现依赖注入来处理我的 MongoDB 数据库。
我有这些类来定义存储库。
用户存储库特征:
存储库实现:
我正在尝试通过这样的“wire”方法连接依赖项:
我有一个这样定义的应用程序加载器:
但我得到了错误:
请注意,我已经ReactiveMongoApiFromContext
在我的ApplicationLoader
.
我还在ReactiveMongoComponents
我的存储库中进行扩展,以便能够访问reactiveMongoApi
这使我能够访问数据库。那是对的吗?
如何在我的存储库实现中连接 ReactiveMongoApi,以便我可以访问数据库和集合?
scala - 如何在 Akka 中实现基于 Actor 的 HTTP 路由
我是阿卡的新手。在学习的过程中,我在Github上创建了一个示例项目。本项目在这里使用Akka
、Akka-HTTP
、Slick
和。我想为 HTTP 路由实现 Akka Actors。我试图实现这一点,但没有按预期工作。Flyway
Macwire
redis/
目前Controller
正在作为:
但是我正在尝试通过对现有代码进行一些更改来实现类似的功能:
谁能建议我如何实现上述内容?我感谢您的帮助。
scala - Macwire、wireWith 和隐式参数
wireWith
似乎在解析隐式参数方面存在一些问题。
最小的例子:
错误:
如果implicit
在 处省略yVal
,则抱怨缺少隐式:
这是一个简化的示例——在我的生产代码中,我尝试连接 Actor 道具:
并得到不同的编译错误:
我尝试过使隐式参数显式化,它工作得很好,除了它有点违背隐式传递执行上下文的通常做法。
我做错了什么还是macwire中的问题?
Github 中的问题:https ://github.com/adamw/macwire/issues/125
scala - 带有macWire DI的Akka actoreRef,未设置actoreRef
我有 2 个演员,Actor1
和Actor2
. Actor1
想要发送MyMsg1
到Actor2
,并且Actor2
在做一些工作并得到Future[MyMsg2]
想要发送MyMsg2
到之后Actor1
。我已经以一种方式工作,但它因 DI 而失败。
场景 1 - 工作场景
- Actor1 -->MyMsg1-->Actor2
- Actor2 MyMsgHandler - 处理消息(使用 Future),使用 pipeTo 到发送者
MyMsg2
。工作正常,Actor1 recvsMyMsg2
场景 2 - 失败的场景
- Actor1 有一个通过 MacWire 注入的 bean -
myBean
。 myBean
已Actor2
作为 bean 注入MyMsg1
并发送到 Actor2- Actor2 MyMsgHandler 处理消息(使用 Future),对发送者执行 pipeTo 并尝试发送
MyMsg2
- 转到 deadLetter。发送者的演员 Ref 永远不会被设置。
- Actor1 有一个通过 MacWire 注入的 bean -
我该如何解决?
也粘贴代码
使用我上面共享的当前代码,Actor1
能够发送Msg1
并Actor2
响应actor2
,Msg2
但Msg2
会进入死信。我收到以下错误
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 注入依赖项
scala - 设置,使用编译时依赖注入进行测试,使用 Playframework 2.6 Macwire
在我的项目中,我有这个结构
DefyProducts组件
DefyProductsLoader
家庭控制器
我想设置测试测试,这是test/
结构
DefyProductsServerTest
主页控制器规格
我写的这个设置不起作用,我不确定为什么在HomeControllerSpec
homeController 中找不到。我知道在测试中所有组件DefyProductsComponents
都是可用的,我可以覆盖
更新:我在 github 中创建了一个非常相似的项目。以防万一有人想玩它https://github.com/agusgambina/play-scala-base.git
playframework-2.6 - 是否可以看到 Macwire 生成的代码
是否可以看到wire
宏生成的代码是什么
在上面的示例中,我想知道DefaultSecuredRequestHandler
创建时传递了哪些参数。DefaultSecuredRequestHandler
不是我的课。它是Silhouette
图书馆的一部分。
我正在尝试创建一个实例,DefaultSecuredRequestHandler
我需要传递BodyParser.Default
给它,但我不知道从哪里得到它。但是,我在网上找到了一些代码,我们使用 Macwire 创建DefaultSecuredRequestHandler
. 因此,我想知道是如何DefaultSecuredRequestHandler
创建的。
scala - Play 子项目是否需要每个带有 Macwire 的 ApplicationLoader?
给定以下子项目集: Play subproject can't import Play-json classes
每个项目是否都需要一个独立的ApplicationLoader?例如对于api
模块,我应该创建 ApiApplicationLoader,对于父项目,我是否也应该创建 BackendApplicationLoader。
考虑到父项目对于开发目的很有用,但是在部署每个模块 Api 时,报告和 CMS 可能会部署在不同的服务器中。但是,核心模块应该是共享的,这是否意味着在这种情况下。不需要 CoreApplicationLoader?