使用 Akka 进行依赖注入

2024-01-22

我在我的应用程序中经常使用 Guice。最近我开始学习 akka actor,并想用它重构我的应用程序。

然而,一开始我就想知道我的所有技巧将如何与演员合作。我继续在谷歌上搜索,结果有点混乱。

我找到的关于该主题的最新文档是:

http://letitcrash.com/post/55958814293/akka-dependency-injection http://letitcrash.com/post/55958814293/akka-dependency-injection

http://eng.42go.com/tag/guice/ http://eng.42go.com/tag/guice/

这不提倡同样的事情。

我必须承认我仍然需要阅读很多东西,我正处于学习akka的开始阶段。我做了一些例子,也做了一些红色的事情,但我不想深入研究一些事情,然后意识到我会遇到很多问题。

所以我的问题是,截至今天,关于如何使用 Akka Actors 进行依赖注入的共识是什么?

什么样的注射是可能的?我们可以将演员与对象/其他演员/...连接起来吗

无论如何,请以简洁的方式概述一些可以帮助我理解什么是可能的以及什么是最佳实践的东西?


我知道您正在 Akka 中使用 Guice 和 Scala,但是 Typesafe 提供了tutorial http://typesafe.com/activator/template/akka-java-spring描述 Akka 与 Spring 和 Java 的工作原理。这可以为理解依赖注入如何适应Actor适合您情况的生命周期。

同时,这里是他们的一些示例代码文档 http://doc.akka.io/docs/akka/2.2.3/AkkaScala.pdf使用工厂方法注入构造函数参数:

class DependencyInjector(applicationContext: AnyRef, beanName: String) extends IndirectActorProducer {
  override def actorClass = classOf[Actor]
  override def produce = // obtain fresh Actor instance from DI framework ...
}
val actorRef = system.actorOf(Props(classOf[DependencyInjector], applicationContext, "hello"), "helloBean")

Here http://letitcrash.com/post/55958814293/akka-dependency-injectionTypesafe 就此事编写了一些指南。

最后,请注意文档中的以下内容:

"当使用依赖注入框架时,actor beansMUST NOT有单例作用域。"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Akka 进行依赖注入 的相关文章

  • 如何最好地处理 Future.filter 谓词不满足类型错误

    我喜欢 scala 的类型安全性 但我不断遇到的一个运行时错误是 Future filter predicate is not satisfied 我知道为什么会出现此错误 只是寻求有关如何最好地解决此错误并优雅地处理它的建议 或者也许我做
  • 注入需要构造函数参数的服务

    我有一项服务需要启动一些值 Injectable export class MyService private myVals any constructor init any this myVals init 而消费者 Component
  • 这种奇怪的 Scala 内存泄漏的原因是什么? [复制]

    这个问题在这里已经有答案了 即使有 7G 的堆空间 这也会耗尽内存 import scala collection mutable Set class Foo val anEmptySet Set Int Set def bar ints
  • 在 Akka 中,我如何知道演员在使用 actorOf() 注册后何时可以使用?

    如果我在 Akka 中使用 context actorOf 创建一个 Actor 我会得到一个有效的 ActorRef 但是 如果我执行相同的操作 但使用 actorFor 和我知道演员将出现的路径创建 ActorRef 则我无法可靠地获取
  • Azure Functions - 注入的 ILogger 日志未显示

    我在用着FunctionsStartup在 Azure Functions 项目中设置 IoC 绑定 但是 从注入创建的任何日志ILogger
  • 如何在未附加到应用程序模型的类中使用 eclipse 4 DI?

    我创建了一个带有声明性服务的 OSGI 服务来注入实现接口的对象 如果我将对象注入到附加到应用程序模型 处理程序 部分 的类中 它就可以正常工作 如果我将它注入到未附加到应用程序模型的类中 它总是返回 null 是否可以在未附加到应用程序模
  • 有状态对象的 IoC 依赖注入(非全局)

    我是这个 IoC 和 DI 业务的新手 我觉得如果你传递的是全局范围的对象 我就明白了这个概念 但是当你需要传递一个全局范围的对象时 我不明白它是如何工作的特定的逻辑状态 因此 例如 如果我想将一个人对象注入到一个写入文件命令对象中 我如何
  • 简单注入器:跨同一图的服务注入相同的 UnitOfWork 实例

    我有多个服务 每个服务都有一个UnitOfWork使用注入到构造函数中简易注射器 http simpleinjector codeplex com国际奥委会容器 目前我可以看到每个UnitOfWork实例是一个单独的对象 这很糟糕 因为我使
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • Nestjs全局pubsub实例和依赖注入

    我遵循了有关 pubsub subscriptions 的 Nestjs DOCS 根据示例 pubsub 在给定解析器的顶部初始化为 const pubSub new PubSub 后来文档说 我们在这里使用了本地 PubSub 实例 相
  • Scala 函数作为对象与类

    trait MyFunctionTrait extends Int Int gt Double class MyFunction1 extends MyFunctionTrait override def apply a Int b Int
  • 最大模式长度 fpgrowth apache Spark

    我正在尝试使用 Spark Scala 运行关联规则 我首先创建一个 FPGrowth 树并将其传递给关联规则方法 但是 我希望添加最大模式长度参数 以限制我想要在左侧和右侧的项目数量 我只想要项目之间的一对一关联 val model ne
  • 在 Scala 中实现不区分大小写比较的字符串类

    我有许多带有不区分大小写的字段的类 我想将这些类的实例放入 HashMap 中 并通过不区分大小写的字符串查找它们 我不是每次想通过字符串索引实例或通过字符串查找实例时都使用 toLowerCase 而是尝试将此逻辑封装在 CaseInse
  • 视图和流有什么区别?

    在Scala 2 8集合框架中 有什么区别view and toStream 在视图中 每次访问元素时都会重新计算它们 在流中 元素在求值时会被保留 例如 val doubled List 1 2 3 4 5 6 7 8 9 10 view
  • 如何对 RDD 进行分区

    我有一个文本文件 其中包含大量由空格分隔的随机浮动值 我正在将此文件加载到 scala 中的 RDD 中 这个RDD是如何分区的 另外 是否有任何方法可以生成自定义分区 以便所有分区都具有相同数量的元素以及每个分区的索引 val dRDD
  • 如何在spark中将矩阵转换为RDD[Vector]

    如何转换自org apache spark mllib linalg Matrix to RDD org apache spark mllib linalg Vector 在火花 该矩阵是由 SVD 生成的 我正在使用 SVD 的结果进行聚
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 为什么要使用依赖注入?

    我试图理解依赖注入 http en wikipedia org wiki Dependency injection DI 我再一次失败了 这看起来很愚蠢 我的代码从来不会乱七八糟 我几乎不编写虚拟函数和接口 尽管我千载难逢 并且我的所有配置
  • 如何在 Scala 中使用 Circe 解码 JSON 列表/数组

    我有代码片段 cursor downField params downField playlist downField items as List Clip 其中 Clip 是字符串和数字的简单 case 类 传入的 Json 应包含一个
  • 在 Scala 中使用隐式的良好实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何客观原因在代码中到处使用隐式参数只是为了缩短应传递的参数数量 我有一个 REST API 端点的每个调用都有一个唯一的 ID 应该在调

随机推荐

  • mongodb-java POJO不返回id

    我是 MongoDB 的新手 在这里有点疯狂 我正在使用最新的 mongo java driver 版本和 dropwizard 我使用 POJO 写入 DDBB 它有效 但是 当尝试获取元素时 我没有得到实际的 id 这是我尝试过的 DD
  • 如何在数字的最后三位数字之前插入小数点?

    我有一个数字 需要添加小数以进行格式化 该数字保证在 1000 到 999999 之间 我已经以其他方式介绍了其他可能性 这是我无法理解的 我需要在最后 3 位数字之前添加小数 例如 1000 gt 1 000 23513 gt 23 51
  • 我可以向 HTML 标记添加自定义属性吗?

    我可以向 HTML 标记添加自定义属性吗 如下所示
  • 在 Google App Engine 中创建表单自动完成

    我想为标签字段构建一个自动完成功能 就像 App Engine 上的 SO 一样 知道我应该如何进行这个过程吗 服务器端算法 自动完成应该有什么逻辑 应用程序引擎实施 数据存储架构应该是什么 嘿 几天前我就遇到了这个问题 只要您有想要搜索的
  • 如何在 ASP.Net Core Razor 页面中返回带有模型的页面

    如何重定向到页面并传递其模型 就像我们在 MVC 中所做的那样return View model MyModel 我尝试过的 return RedirectToPage Notify new Model notifierVM 注意 我要返回
  • 如何立即关闭 C 程序?

    我正在编写 C 代码 在其中分析一些数据 我已将程序设置为仅处理 100 个数据输入 当输入超过 100 个时 就会出现分段错误 我想创建一种方法 以便当输入数量超过 100 时 用户将收到警告并且程序将终止 我知道如何从主要功能中简单地做
  • MyGroups 未在 Communicator.UIAutomation 中实现

    我正在开发一个浏览器外的 Silverlight 应用程序 它提供了一些 MS Office Communicator 2007 控件 我正在使用 与 SDK 一起安装的文档指出 IMessenger2 界面中有一个 MyGroups 属性
  • 测试 swift 异步函数超时

    如何编写一个单元测试来检查异步函数是否不会超时 我正在尝试常规XCTestExpectation 但是因为await暂停一切 是等不到期待 在下面的代码中 我正在检查loader perform 执行时间不超过1秒 func testLoa
  • 在 KnockoutJS 中获取可观察的多维数组(对象)

    我正在使用 Knockout 构建一个应用程序 发现它非常有用 虽然 我在获取多维数组 对象 可观察时遇到问题 目前我正在使用以下结构 self form ko observableArray ko utils arrayMap initi
  • /bin/sh: python: 找不到命令

    我刚刚安装了 Python3 和 Komodo 我正在尝试运行一个简单的脚本 但收到 py 命令未找到的错误 我对 Komodo 和 Python 都是新手 所以不知道该去哪里寻找 我看到另一篇文章也有同样的问题 但没有提供有帮助的解决方案
  • 虚拟继承的内部机制

    C 示例代码 class A public A int class B public virtual A public B int b A b class C virtual public A public C int c A c clas
  • 在 jQuery Mobile 中的 Ajax 调用上显示页面加载微调器

    我正在使用 ajax 填充我的移动网络应用程序中的列表 我想做的是让 jQuery 移动加载微调器在执行此调用时出现 并在列表填充后消失 当前版本的 JQM 使用 mobile showPageLoadingMsg and mobile h
  • 如何使操作栏图标在单击时发生变化

    我在 Sherlock ActionBar 中有一组紫色背景的白色图标 我想让它们在被点击时变成深紫色 我有相同的深紫色图标 所以我想让这些可绘制对象显示在按下状态 现在 我知道如何在整个应用程序主题中执行此操作 但这意味着我必须对所有图标
  • 阻止本地网站在 Chrome 上强制使用 HTTPS?

    Chrome 已更新为在某些保留的域名上强制使用 HTTPS 不幸的是我的本地计算机之一出现在列表中 我的机器名称是 dev Chrome 现在自动重定向 http dev http dev 到 https dev https dev 我在
  • Java获取本地IP [重复]

    这个问题在这里已经有答案了 我正在尝试获取本地IP 它应该与 System out println Inet4Address getLocalHost getHostAddress or InetAddress addr InetAddre
  • jquery map函数对表的使用

    我有这张表 table thead tr th UtstyrsID th th Navn th th Utlevert th th Kommentar th tr thead tbody tr td 1 td tr tbody table
  • Java - 帮助在任意锚点绘制文本的最佳库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我熟悉如何使用各种 FontMetrics 函数使文本垂直 水平居中等 但是 我正在寻找一个支持在相对
  • 使用组合键中的一列作为外键

    我试图看看是否可以使用复合键中的一列作为外键 我得到了奇怪的结果 CREATE TABLE TESTPARENT PK1 INT PK2 INT PRIMARY KEY PK1 PK2 Query OK 0 rows affected 0
  • C# 属性名称缩写

    C 属性的名称中怎么可能有 Attribute 例如DataMemberAttribute 但初始化时没有这个后缀 例如 DataMember private int i 根据C 语言规范 http msdn microsoft com e
  • 使用 Akka 进行依赖注入

    我在我的应用程序中经常使用 Guice 最近我开始学习 akka actor 并想用它重构我的应用程序 然而 一开始我就想知道我的所有技巧将如何与演员合作 我继续在谷歌上搜索 结果有点混乱 我找到的关于该主题的最新文档是 http leti