玩! 2.5:有没有办法只在Prod模式下绑定actor?

时间:2017-02-24 10:19:50

标签: scala playframework module guice

我在Play的开头绑定演员!申请如下:

class Modules extends AbstractModule with AkkaGuiceSupport with ScalaModule {

override def configure(): Unit = {
  bindActor[MainSupervisor](MainSupervisor.name)
}

我想在不在生产中运行时停用MainSupervisor。今天我直接在演员的Play.env模式匹配,但我想将代码与此分开。

有没有办法在开发模式下直接在课程Modules中绑定演员?

2 个答案:

答案 0 :(得分:1)

您可以在配置文件中绑定模块,并且可以在prod和dev上使用不同的配置,因此您可以不在dev配置上绑定模块。

https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection#programmatic-bindings

https://www.playframework.com/documentation/2.5.x/ProductionConfiguration#specifying-an-alternate-configuration-file

答案 1 :(得分:1)

您有两种方法可以实现这一目标:

以编程方式

将Environment注入Module类并查询其模式

这样的东西
class Modules(environment: Environment, configuration: Configuration) 
      extends AbstractModule with AkkaGuiceSupport with ScalaModule {

     override def configure(): Unit = {
         if (environment.mode == Mode.Prod) {
            bindActor[MainSupervisor](MainSupervisor.name)
         }
     }

配置

为生产模式指定其他配置文件

在prod.conf中

include "application.conf"
play.modules.enabled += com.mycompany.MyModule