gpt4 book ai didi

java - Play Framework 依赖注入(inject)

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:53 25 4
gpt4 key购买 nike

我一直在谷歌上寻找一些关于如何在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com