SSH集成时action里的service接口总是为null,最后执行到操作数据库时出现空指针异常。而自己写测试类能成

2024-10-22 11:57:13
推荐回答(5个)
回答1:

1.service为null的情况一般有几种情况:spring的配置文件没有配置;依赖注入由于写的不仔细而没有实现注入等原因。首先检查是否在spring的配置文件中注入了你想要的service如果有,检查是否因为大小写的小错误而不能实现注入。

2.可以在action的这样处理:

让action继承一个自己编写的BaseAction 在让BaseAction去继承DispatchAction 在BaseAction中实现service的获取

public class BaseAction extends DispatchAction{

protected Object getBean(String id){

WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.servlet.getServletContext());

return context.getBean(id);

}

}

然后在你的action中就可以直接通过方法得到你想要的service。

IService service = (IService) getBean("你想要的service");

你就可以用service调用你的CRUD方法执行了!

这里主要用到的是spring的DI(依赖注入)spring的核心之一!

回答2:

使用ssh的时候,service实例是不需要自己new 的.而是交由spring管理,并注入.你只要写istaffService和istaffService的setter方法,到时候spring 会帮你注入实例.

回答3:

缺少一个 jar 包 ,缺少 struts-spring-plugin 的插件包。如果Action 类要依赖spring注入,就必须加入这个 jar 包

回答4:

这不是报service是null

StaffService.findByExample(StaffService.java:27)

说的是StaffService的第27行抛了NullPointerException, 你看看那行的代码

回答5:

那就是Service接口没有注入进去.spring没有管到.再查查看.