我们有一个新的 Play 2.0 项目,我们计划在添加一些复杂的第 3 方集成代码时引入 DI。
Play 2.0 有一个 Guice 插件,但它看起来在 2.1 时会过时,我有一种预感,即 2.1 不再那么远了。
https://github.com/typesafehub/play-plugins/tree/master/guice
Guice 是 Play 2.0/2.1 的安全选择还是我们应该考虑其他选择?
我们有一个新的 Play 2.0 项目,我们计划在添加一些复杂的第 3 方集成代码时引入 DI。
Play 2.0 有一个 Guice 插件,但它看起来在 2.1 时会过时,我有一种预感,即 2.1 不再那么远了。
https://github.com/typesafehub/play-plugins/tree/master/guice
Guice 是 Play 2.0/2.1 的安全选择还是我们应该考虑其他选择?
我会选择 2.1 版本,以及来自 Global 对象的新控制器实例。
这是文档中的 Guice 示例:
import play.GlobalSettings;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class Global extends GlobalSettings {
private static final Injector INJECTOR = createInjector();
@Override
public <A> A getControllerInstance(Class<A> controllerClass) throws Exception {
return INJECTOR.getInstance(controllerClass);
}
private static Injector createInjector() {
return Guice.createInjector();
}
}
你必须为这些控制器声明一个特殊的路由,特殊的@
:
GET /myUrl @controllers.MyController.myMethod()
你也可以看看这个使用 Spring 的演示:https ://github.com/guillaumebort/play20-spring-demo