我的应用正在经历一个“怪异的”#34; Guice问题。不知何故,服务是在一种方法中注入而不是在另一种方法中注入。我不确定原因:
public class MyServerResource {
@Inject
MyService myService;
@Override
public void create() {
if(myService == null){
// This one is not thrown
throw new RuntimeException("Service is null");
}
}
@Override
public void get() {
if(myService == null){
// This one is thrown
throw new RuntimeException("Service is null");
}
}
}
在create()方法中,服务不为null,而在get()方法中,服务为null。这是什么样的Guice行为?有没有人经历过这个?
答案 0 :(得分:4)
首选构造函数注入字段和方法注入。
public class MyServerResource {
private final MyService myService;
@Inject
public MyServerResource(MyService myService) {
this.myService = myService;
}
@Override
public void create() {
// myService isn't null here
}
@Override
public void get() {
// myService isn't null here
}
}
这种方法有很多好处: