Plugins 如何使用模块而不是插件插入游戏生命周期?
我看到Plugin类现在已经被弃用了(从play的2.4.x版本开始)。。。在api文档中,它说我应该使用模块来代替。。。这就是我的问题。Plugins 如何使用模块而不是插件插入游戏生命周期?,plugins,module,lifecycle,playframework-2.4,Plugins,Module,Lifecycle,Playframework 2.4,我看到Plugin类现在已经被弃用了(从play的2.4.x版本开始)。。。在api文档中,它说我应该使用模块来代替。。。这就是我的问题。 如何编写模块,以及如何将该模块插入主应用程序的播放生命周期?您没有指定使用哪种语言,因此我将快速介绍这两种语言。这两个答案都基于以下存储库: JAVA 以任何您想要的方式编写您的功能-没有要扩展的特定类。如果您对播放组件(如配置)有依赖关系,则应插入它们 @Singleton public class MyModuleCode { priv
如何编写模块,以及如何将该模块插入主应用程序的播放生命周期?您没有指定使用哪种语言,因此我将快速介绍这两种语言。这两个答案都基于以下存储库:
配置
)有依赖关系,则应插入它们
@Singleton
public class MyModuleCode {
private final boolean enableWidgets;
@javax.inject.Inject
public MyModuleCode(final Configuration configuration) {
this.enableWidgets = configuration.getBoolean("widgets.enabled", false);
}
}
@Singleton
class DefaultPatternCache @Inject() (cache: CacheApi) extends PatternCache {
override def apply(value: String): Option[Pattern] = cache.getOrElse[Option[Pattern]](key = s"Deadbolt.pattern.$value") { Some(Pattern.compile(value)) }
}
@Singleton
注释,但它也可以有,例如,每个请求范围
有关更多信息,请参阅
play.api.inject.Module
类并实现public seq如果我想注册Jackson json模块怎么办?我应该在哪里这样做(没有全球会议)?这并不是说我需要在我的代码中注入一些类的实例,我只需要在任何http请求之前运行一些代码。文档中明确介绍了这一点:我的意思是,我需要在任何http请求发生之前执行这一操作,但只执行一次,而不是一次pero请求。将包含代码的类声明为渴望的单例-它将运行一次,当应用程序启动时。有关详细信息,请参阅。
play {
modules {
enabled += com.example.module.MyModule
}
}
@Singleton
class DefaultPatternCache @Inject() (cache: CacheApi) extends PatternCache {
override def apply(value: String): Option[Pattern] = cache.getOrElse[Option[Pattern]](key = s"Deadbolt.pattern.$value") { Some(Pattern.compile(value)) }
}
package com.example.module
import com.example.module.cache.{DefaultPatternCache, PatternCache}
import play.api.inject.{Binding, Module}
import play.api.{Configuration, Environment}
class MyModule extends Module {
override def bindings(environment: Environment, configuration: Configuration): Seq[Binding[_]] = Seq(bind[PatternCache].to[DefaultPatternCache])
}
play {
modules {
enabled += com.example.module.MyModule
}
}