spring注入问题,求解高手

ghosteryly 2012-08-06 02:02:28
各位兄弟:
最近在用s2sh做项目,出现一个一个问题一直无法解决,求解。
问题是这样的。我有一个action对象(A),里面有多个方法,也有一个注入的service对象。
现有一个框架页,分别访问了A的2个不同方法。当我重启了tomcat,然后第一次访问这个框架页的时候,访问的2个方法有一个报了空指针异常,有一个正常。空指针是由于service对象注入为null导致。我疑惑的是,为什么同时访问action对象的两个方法,为什么一个注入失败,一个注入成功,而且哪个成功哪个失败具有随意性。并且这样的问题只发生在tomcat重启后第一次访问时候。
请指点。

...全文
223 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iamagril 2012-08-07
  • 打赏
  • 举报
回复
LZ代码粘出来看看
陈绍唐我爱你 2012-08-07
  • 打赏
  • 举报
回复
哇,貌似好复杂啊
  • 打赏
  • 举报
回复
百思不得其解~~
ghosteryly 2012-08-07
  • 打赏
  • 举报
回复
重启服务器后第一次访问有时候会报空指针异常。
下面是我调试的输出的信息。


[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- 注入groupService:null
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- gsID:null
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- 注入groupService:com.yao.newoa.service.org.impl.GroupServiceImpl@13ecbfc
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- gsID:com.yao.newoa.service.org.impl.GroupServiceImpl@13ecbfc
ghosteryly 2012-08-07
  • 打赏
  • 举报
回复
@Component("groupaction")
@Scope("prototype")
public class GroupAction extends BaseAction implements ModelDriven{


final static Logger log = Logger.getLogger(GroupAction.class);

private GroupFormBean gfb = new GroupFormBean();

private IGroupService groupService;
private IRoleService roleService;

public GroupAction(){
log.debug("构造了action:"+this);
}

public IRoleService getRoleService() {
return roleService;
}
@Resource(name="roleService")
public void setRoleService(IRoleService roleService) {
this.roleService = roleService;
}
public IGroupService getGroupService() {
return groupService;
}
@Resource(name="groupService")
public void setGroupService(IGroupService groupService) {
log.debug("注入groupService:"+groupService);
this.groupService = groupService;
log.debug("gsID:"+groupService);
}
public String add()throws Exception{
String returnValue=SUCCESS;
log.debug("获取到的gfb对象:"+gfb);
try {
groupService.addByDto(gfb);
log.info("添加群组成功");
} catch (Exception e) {
log.error("添加群组异常。原因:"+e.getMessage());
throw e;
}
return returnValue;
}

public Object getModel() {
return gfb;
}
}
ghosteryly 2012-08-07
  • 打赏
  • 举报
回复
部分代码如下:


@Component("groupaction")
@Scope("prototype")
public class GroupAction extends BaseAction implements ModelDriven{


final static Logger log = Logger.getLogger(GroupAction.class);

private GroupFormBean gfb = new GroupFormBean();

private IGroupService groupService;
private IRoleService roleService;

public GroupAction(){
log.debug("构造了action:"+this);
}

public IRoleService getRoleService() {
return roleService;
}
@Resource(name="roleService")
public void setRoleService(IRoleService roleService) {
this.roleService = roleService;
}
public IGroupService getGroupService() {
return groupService;
}
@Resource(name="groupService")
public void setGroupService(IGroupService groupService) {
log.debug("注入groupService:"+groupService);
this.groupService = groupService;
log.debug("gsID:"+groupService);
}
public String add()throws Exception{
String returnValue=SUCCESS;
log.debug("获取到的gfb对象:"+gfb);
try {
groupService.addByDto(gfb);
log.info("添加群组成功");
} catch (Exception e) {
log.error("添加群组异常。原因:"+e.getMessage());
throw e;
}
return returnValue;
}

public Object getModel() {
return gfb;
}
}



小曦阳哟 2012-08-06
  • 打赏
  • 举报
回复
能不能把代码发出来啊
ghosteryly 2012-08-06
  • 打赏
  • 举报
回复
高手求救啊。
原来spring 2.56没问题
现在用spring 3.1出现的问题
ghosteryly 2012-08-06
  • 打赏
  • 举报
回复
@Scope("prototype")
其他的service对象是单例
ghosteryly 2012-08-06
  • 打赏
  • 举报
回复
下面是我调试的输出的信息。


[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- 注入groupService:null
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- gsID:null
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- 注入groupService:com.yao.newoa.service.org.impl.GroupServiceImpl@13ecbfc
[DEBUG] 2012-08-06 13:36:38 [com.yao.test.action.org.GroupAction]- gsID:com.yao.newoa.service.org.impl.GroupServiceImpl@13ecbfc
it491328322 2012-08-06
  • 打赏
  • 举报
回复
哇。。。一个很不可思议的问题。。。
从来没有碰见过耶。。。
如果我是楼主,我会选择从scope原因上查起。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧