gpt4 book ai didi

java - 如何将场注入(inject)与 Action 组合一起使用?

转载 作者:搜寻专家 更新时间:2023-11-01 03:49:59 25 4
gpt4 key购买 nike

Play 2.4 开箱即用地支持依赖注入(inject) Controller 。我已经成功地使用构造函数注入(inject)来为我的 Controller 提供依赖项。但是,当使用 action composition 时, 标记为 @Inject 的字段不会被注入(inject)。

有什么方法可以将依赖项注入(inject)复合操作吗?

Controller 示例代码:

public class Application extends Controller {
private DomainService ds;

@Inject
public Application(DomainService ds) {
this.ds = ds;
}

@Security.Authenticated(RandomAuthenticator.class)
public Result index() {
return ok();
}

}

复合 Action 的示例代码:

public class RandomAuthenticator extends Security.Authenticator {
@Inject private RandomService rs; // This field is never injected

@Override
public String getUsername(Context context) {
float randFloat = rs.nextFloat(); // Error! rs is always null

if (randFloat > 0.1) {
return "foo";
}

return null;
}
}

最佳答案

您可以尝试使用类的构造函数来注入(inject) Guice,而不是字段注入(inject):

public class RandomAuthenticator extends Security.Authenticator {

private RandomService rs;

@Inject
RandomAuthenticator(RandomService randomService) {
this.rs = randomService;
}

@Override
public String getUsername(Context context) {
float randFloat = rs.nextFloat(); // Error! rs is always null

if (randFloat > 0.1) {
return "foo";
}

return null;
}
}

关于java - 如何将场注入(inject)与 Action 组合一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303978/

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