我在java.I中使用了下面的代碼不知道我在這裏做了什麼錯誤。Guice依賴注入器空指針異常
我的主要文件是:看,並檢查
package com.sample.test;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class mymain {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new AppInjectory());
ApplicationExample obj = injector.getInstance(ApplicationExample.class);
obj.sendMessage();
}
}
我的界面:外觀和檢查
package com.sample.test;
public interface MessageService {
boolean sendMessage(String msg, String receipient);
}
我的配置文件看起來和檢查
package com.sample.test;
import com.google.inject.AbstractModule;
public class AppInjectory extends AbstractModule {
@Override
protected void configure() {
bind(MessageService.class).to(EmailService.class);
}
}
我的應用程序文件是:外觀和檢查
package com.sample.test;
import javax.inject.Inject;
public class ApplicationExample {
private MessageService service;
@Inject
public void setService(MessageService svc){
this.service=svc;
}
public void sendMessage() {
System.out.println(「I am here」);
service.sendMessage(「welcome」, 「java」);
}
}
我的服務類是:看,並檢查
package com.sample.test;
//import com.google.inject.Singleton;
import javax.inject.Singleton;
@Singleton
public class EmailService implements MessageService {
public boolean sendMessage(String msg, String receipient) {
//some fancy code to send email
System.out.println(「Email Message sent to 「+receipient+」 with message=」+msg);
return true;
}
}
在這裏我得到空指針異常。什麼錯了,我沒有here.?please幫助解決這個issue.I這裏添加的錯誤堆棧跟蹤。 請看看它。
錯誤:
Exception in thread 「main」 I am here java.lang.NullPointerException at com.sample.test.ApplicationExample.sendMessage(ApplicationExample.java:16) at com.sample.test.mymain.main(mymain.java:13)
的可能的複製[?什麼是空指針異常,以及如何解決呢(http://stackoverflow.com/questions/218384/ what-is-a-nullpointerexception-and-how-do-i-fix-it) – sidgate
請格式化您的代碼(並使其適合)。 – zhon
ApplicationExample是否使用setter注入而不是構造函數注入是有原因的嗎?構造函數注入將使得更容易推理「消息服務」不能爲空的不變量。也就是說,我相信你所展示的代碼應該可以工作。這是你的實際代碼導致錯誤? –