我正在阅读以下关于Lagom的教程 .
我理解DI,但该部分还讨论了Application和Loader . 我无法理解创建Application和Loader类的目的 . 到目前为止,我已经能够在不创建Application和loader类的情况下运行基本服务(例如,hello,来自GettingStarted的世界服务) .
我正在阅读以下关于Lagom的教程 .
我理解DI,但该部分还讨论了Application和Loader . 我无法理解创建Application和Loader类的目的 . 到目前为止,我已经能够在不创建Application和loader类的情况下运行基本服务(例如,hello,来自GettingStarted的世界服务) .
1 回答
让我们考虑一个示例ApplicationLoader(这不是唯一的方法,只是为了问题而做一个例子)
首先,我们创建一个扩展
LagomApplication的类
FriendModule` 的原因是混合我们所有的依赖项 . 他们可能是:如果应用程序依赖于cassandra和persistence api,那么我们就混合它 . 如果应用程序需要进行HTTP调用,那么我们为它提供WSClient等
我们当然在编译时依赖关系
通过以下操作,我们将实现与声明的服务绑定在一起
override lazy val lagomServer:LagomServer = serverForFriendService
但请注意,我们还没有将我们的微服务与 Service Locator 相结合 .
服务定位器的作用是提供发现应用程序服务并与之通信的能力 . 例如:如果应用程序有五个不同的微服务运行,那么每个应用程序都需要知道每个其他地址才能进行通信 . 服务定位器负责保存相关微服务的地址信息 . 在缺少此服务定位器的情况下,我们需要配置每个微服务的URL并使其可用于每个微服务(可以通过属性文件?) .
所以在类
FriendApplicationLoader
中,我们在开发案例中将我们的实现与LagomDevModeComponents
绑定在一起 .LagomDevModeComponents
使用注册表注册我们的服务 . 这就是神奇的Lagom微服务如何以简单的方式与他人交流 .