Playframework与吉斯没有路由(Playframework & Guice without

2019-09-04 02:59发布

我想知道,如果有可能,而不必由路由通过注入使用吉斯依赖。 如果是我怎么能叫我的class Test @Inject()...我的应用程序中?

Answer 1:

我认为有在游戏框架使用吉斯两种方式:

1)直接实例基于所述绑定的对象:

吉斯添加到您的Build.scala应用的依赖

val appDependencies = Seq(
    "com.google.inject" % "guice" % "3.0"
)

创建全局类,它扩展GlobalSettings,并在配置绑定接口实现():

public class Global extends GlobalSettings {

    private Injector injector = Guice.createInjector(new AbstractModule() {
        @Override
        protected void configure() {
            bind(TestInferface.class).to(TestImpl.class);
        }
    });

}

在您的控制器或其他任何类,使用@Inject注解来获取接口的实例:

@Inject
private Test test;

2)依赖注入播放控制器

覆盖GlobalSettings.getControllerInstance管理控制器类实例化或者通过吉斯:

@Override
public <A> A getControllerInstance(Class<A> controllerClass) throws Exception {
    return injector.getInstance(controllerClass);
}

如何使用吉斯注入?

GET     /test1                           @controllers.ApplicationTest1.index()
GET     /test2                           @controllers.ApplicationTest2.index()

开始@路由定义将play.GlobalSettings#getControllerInstance方法进行管理。



文章来源: Playframework & Guice without routing