java - Play Framework 依赖注入(inject)

标签 java dependency-injection playframework guice playframework-2.1

我一直在谷歌上寻找一些关于如何在 Play Framework 2.1 中使用 Guice/Spring DI 的有用信息

我想做的是在一些 DAO 中注入(inject)多个服务,反之亦然。

只是需要澄清一下 - 使用 play 2.1,您是否必须在 DI 的路由文件中使用 @ 注释?

我在这里看过这个指南 - https://github.com/playframework/Play20/blob/master/documentation/manual/javaGuide/main/inject/JavaInjection.md

并应用以下步骤在应用程序中创建一个全局类并在 Build.scala 中添加 GUICE 依赖项,但在调用注入(inject)对象时继续出现空指针异常。

有没有人能够使用 Guice 让 DI 在 Play 2.1 中工作?我在 Internet 上看到过示例,但它们似乎都在 Controller 中使用 DI。

最佳答案

我注意到您正在使用 Java。以下是我如何让它注入(inject) Controller 。

首先,我创建了以下 4 个类:

我的 Controller :

package controllers;

import play.mvc.*;
import javax.inject.Inject;

public class MyController extends Controller {

@Inject
private MyInterface myInterface;
    public Result someActionMethodThatUsesMyInterface(){
        return ok(myInterface.foo());
    }
}

我的界面:

package models;

public interface MyInterface {
    String foo();
}

MyImplementation2Inject:

package models;

public class MyImplementation2Inject implements MyInterface {
    public String foo() { 
        return "Hi mom!";
    }
}

我的组件模块:

package modules;

import com.google.inject.AbstractModule;
import models.MyInterface;
import models.MyImplementation2Inject;

public class ComponentModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(MyInterface.class).
                to(MyImplementation2Inject.class);
    }
}

现在,我花了很长时间才弄明白的最后一部分是注册模块。为此,您可以将以下行添加到 application.conf 文件的末尾,该文件位于 conf 目录中:

play.modules.enabled += "modules.MyComponentModule"

希望对您有所帮助。 :)

关于java - Play Framework 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600186/

相关文章:

java - 为什么这些打印语句会有所不同?

java - 在不处理显示器(父级)的情况下处理外壳

android - Dagger2 - "is not a framework type."错误

java - 使用或不使用 Spring Beans 有什么区别?

java - 查找 Java 字符串中给定字符之前的最后一个字符

java - 事务回滚后从文件系统中删除文件

dependency-injection - 使用 IoC 和循环引用解决此问题的最佳设计是什么

java - 在 Play Framework 2.3.0 (Java) 的 build.sbt 中定义 JAVA_OPTS

google-app-engine - 确定 Google 应用引擎运行缓慢的原因

java - 服务器突然停止