Java Google guice injector for Servlets返回500错误
这是我的ServletJava Google guice injector for Servlets返回500错误,java,jsp,servlets,dependency-injection,guice,Java,Jsp,Servlets,Dependency Injection,Guice,这是我的Servlet @WebServlet("/UserServlet") public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Inject IUserBusiness userBusiness; protected void doGet(HttpServletRequest request, HttpServletResponse
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Inject IUserBusiness userBusiness;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
List<UserBean> usersList=new ArrayList<UserBean>();
usersList=userBusiness.getAllUsers();
usersList.size();
}
及
但我得到了一个500错误(servlet中userBusiness的null指针异常)
如果您使用的是Guice,为什么要设置
@WebServlet(“/UserServlet”)
?额外的注释不会造成任何伤害,但它可能会掩盖一个单独的错误配置
确保您是通过Guice绑定访问servlet的,因为如果您是通过其他配置访问servlet,那么@Inject字段将不会被设置,并且在尝试访问它们时,您将获得一个NPE。UserServlet.java:36上的内容是什么?
public interface IUserBusiness {
List<UserBean> getAllUsers();
}
public class UserBusiness implements IUserBusiness{
public List<UserBean>userList;
public UserBusiness() {
userList=new ArrayList<UserBean>();
}
public List<UserBean> getAllUsers(){
UserBean user=new UserBean();
user.setAge(44);
user.setEmail("fgdfg");
user.setPassword("dfgdfgf");
userList.add(user);
return this.userList;
}
}
@Override
protected com.google.inject.Injector getInjector() {
return Guice.createInjector(
new ServletModule() {
@Override protected void configureServlets() {
serve("/index.html").with(UserServlet.class);
}
},
new Configure());
}
public class Configure extends com.google.inject.AbstractModule{
@Override
protected void configure() {
bind(IUserBusiness.class).to(UserBusiness.class);
}
}
Servlet.service() for servlet [dynamic.UserServlet] in context with path [/dynamic] threw exception
java.lang.NullPointerException
at dynamic.UserServlet.doGet(UserServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)