Spring注入的bean 为什么为空

zzbutcher 发布于 2015/03/23 09:03
阅读 4K+
收藏 0

Spring配置文件

<bean id="loginService" class="com.testPlatform.service.LoginService">
    <property name="userDao" ref="userDaoImp"/>
</bean>
 
<bean id="loginAction" class="com.testPlatform.action.LoginAction" scope="prototype">
    <property name="loginService" ref="loginService"/>
</bean>

Struts配置文件


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
	<constant name = "struts.i18n.encoding" value="UTF-8"/>
		
	<package name ="login" extends="struts-default">       
		<action name="login" class="com.testPlatform.action.LoginAction" method="loginValidate">
			<result name="error">/resource/login.jsp</result>
			<result name="success">/resource/main.jsp</result>
		</action>
	</package>
</struts>



代码:

package com.testPlatform.action;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.testPlatform.domain.User;
import com.testPlatform.service.LoginService;


public class LoginAction {


 private LoginService loginService;
 
 private Integer rtxID;
 private String password;
 
 public String loginValidate()
 {
 User user = loginService.loginValidate(rtxID, password);
 if( null == user )
 {
 return "error";
 }
 
 HttpServletRequest request = ServletActionContext.getRequest();
 request.getSession().setAttribute("sessionuserinfo", user);
 
 return "success";
 }
 
	public LoginService getLoginService() {
 return loginService;
 }
 public void setLoginService(LoginService loginService) {
 System.out.println("LoginService setter---------------------------");
 this.loginService = loginService;
 }
}

每次页面发起请求 来到函数loginValidate()时,发现loginService的值为null,不知道为什么
我在LoginService类的构造函数中 增加了日志打印,tomcat启动的时候,出现了相应的日志,说明LoginService的构造函数已经被执行了,但为什么页面发起请求的时候LoginAction 的成员loginService的值为null?

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	com.testPlatform.action.LoginAction.loginValidate(LoginAction.java:19)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

以下是截取的 tomcat启动日志
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7c4f8358: defining beans [dataSource,sessionFactory,transactionManager,daoTemplate,userDaoImp,loginService,loginAction]; root of factory hierarchy

2015-3-20 14:22:31 org.springframework.orm.hibernate3.HibernateTransactionManager afterPropertiesSet
信息: Using DataSource [org.apache.commons.dbcp.BasicDataSource@7b3cb2c6] of Hibernate SessionFactory for HibernateTransactionManager
UserDaoImp construct---------------------------
LoginService construct---------------------------
setUserDao setter---------------------------
LoginService setter---------------------------









加载中
0
Jack_Q
Jack_Q
struts2和spring需要一个插件来IOC
0
拉登他哥
拉登他哥

struts配置呢

0
泥瓦匠BYSocket
泥瓦匠BYSocket
<bean id="loginService" class="com.testPlatform.service.LoginService">

com.testPlatform.service.LoginServiceImpl Bean指定的应该是实现类LoginServiceImpl ,不是接口
0
zzbutcher
zzbutcher

引用来自“拉登他哥”的评论

struts配置呢

已经呈上
拉登他哥
拉登他哥
struts new一个action,spring又new一个action,你说该不该为null呢?
0
zzbutcher
zzbutcher

引用来自“泥沙砖瓦浆木匠”的评论

<bean id="loginService" class="com.testPlatform.service.LoginService">

com.testPlatform.service.LoginServiceImpl Bean指定的应该是实现类LoginServiceImpl ,不是接口
我的service里面 没有搞接口,LoginService就是实现类。
0
会编程的坦克兵
会编程的坦克兵
<action name="login" class="com.testPlatform.action.LoginAction" clss引用spring配置的 loginAction
0
无忌
无忌

@zzbutcher 

struts 配置应该是这样的,class使用 spring 容器中已经实例化的bean

<actionname="login"class="loginAction"method="loginValidate">

0
zzbutcher
zzbutcher

引用来自“无忌”的评论

@zzbutcher 

struts 配置应该是这样的,class使用 spring 容器中已经实例化的bean

<actionname="login"class="loginAction"method="loginValidate">

直接这样配,tomcat启动的时候 会报错 找不到这个类噢。

是不是还要搞一些别的东西。

0
十月阳光
十月阳光
楼主在webl.xml中添加了Spring的监听吗?
0
tonghuazhong
tonghuazhong
首先检查是否缺少spring-struts的一个jar包,用来集成二者的。其次web.xml,然后检查struts.xml 或者property。
返回顶部
顶部