当前位置:编程学习 > JAVA >>

spring 注入空指针 @Autowired

spring 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<import resource="applicationContext_hibernate.xml" />
<!-- 
<import resource="applicationContext_dao.xml" />
<import resource="applicationContext_service.xml" />
 -->
<bean id="baseDao" class="ewell.hibernate.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="fixedAssetsDao" class="assets.dao.FixedAssetsDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="fixedAssetsService" class="assets.service.impl.FixedAssetsServiceImpl">
<property name="fixedAssetsDao" ref="fixedAssetsDao"/>
</bean>
<context:annotation-config/>
</beans> --------------------编程问答-------------------- java 类
public class MoreSubmitAction extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = -2642477253768657361L;
@Autowired
private FixedAssetsServiceImpl fixedAssetsService;
private String msg;
    private javax.servlet.http.HttpServletRequest request;
    // 获得HttpServletRequest对象
    public void setServletRequest(HttpServletRequest request)
    {
        this.request = request;
    }
    public void setFixedAssetsService(FixedAssetsServiceImpl fixedAssetsService) {
this.fixedAssetsService = fixedAssetsService;
}

    // 处理save submit按钮的动作
    public String save() throws Exception
    {
     FixedAssets fa=new FixedAssets();
     fa.setAssetType(1);
     fa.setBuyDid("aa");
     fa.setName("name");
//     this.fixedAssetsService=new FixedAssetsServiceImpl();
     this.fixedAssetsService.saveOrUpdateFixedAssets(fa);
        request.setAttribute("result", "成功保存[" + msg + "]");
        return "save";
    }

    // 处理print submit按钮的动作
    public String print() throws Exception
    {
        request.setAttribute("result", "成功打印[" + msg + "]");
        return "print";
    }
    public String getMsg()
    {
        return msg;
    }

    public void setMsg(String msg)
    {
        this.msg = msg;
    }
} --------------------编程问答-------------------- 这是tomcat的信息,从这里看应该是加载了spring配置文件了
2011-08-07 16:56:05,500  INFO XmlBeanDefinitionReader:315 - Loading XML bean definitions from URL [file:/E:/tool/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/assets_service/WEB-INF/classes/resources/app-bean.xml]
2011-08-07 16:56:05,531  INFO XmlBeanDefinitionReader:315 - Loading XML bean definitions from URL [file:/E:/tool/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/assets_service/WEB-INF/classes/resources/applicationContext_hibernate.xml] --------------------编程问答-------------------- 以下是报错信息
java.lang.NullPointerException
example.MoreSubmitAction.save(MoreSubmitAction.java:38)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
--------------------编程问答-------------------- 应该是fixedAssetsService没有正确注入吧!应该是MoreSubmitAction这个类没有用spring来管理从而造成的fixedAssetsService不能注入的原因吧。希望楼主仔细检查一下代码。 --------------------编程问答--------------------
引用 4 楼 javaman_ka 的回复:
应该是fixedAssetsService没有正确注入吧!应该是MoreSubmitAction这个类没有用spring来管理从而造成的fixedAssetsService不能注入的原因吧。希望楼主仔细检查一下代码。


能说的明白点吗?action一定要用Spring来管理呢?
如果用Spring来管理又如果实现呢?
--------------------编程问答-------------------- fixedAssetsService没有注入
   <bean name="example" class="example.MoreSubmitAction">
           <property name="fixedAssetsService" ref="fixedAssetsService"></property>
          </bean>
          <bean id="fixedAssetsService" class=""></bean>

--------------------编程问答--------------------
引用 6 楼 liuchuan12 的回复:
fixedAssetsService没有注入
XML code
   <bean name="example" class="example.MoreSubmitAction">
              <property name="fixedAssetsService" ref="fixedAssetsService"></property>
          </bean>


这段加进去也没有用啊,还是不行的 --------------------编程问答-------------------- 有哪位高手过来指点一下的 --------------------编程问答-------------------- 路过的 貌似没注入好 --------------------编程问答-------------------- @Autowired
private FixedAssetsServiceImpl fixedAssetsService;

应改为
private fixedAssetsService fixedAssetsService1; --------------------编程问答-------------------- 不对,可能是sessionFactory为null,或者struts2和spring整合时有问题 --------------------编程问答--------------------
引用 7 楼 zhangkefei007 的回复:
引用 6 楼 liuchuan12 的回复:

fixedAssetsService没有注入
XML code
<bean name="example" class="example.MoreSubmitAction">
<property name="fixedAssetsService" ref="fixedAssetsService"></property>
</bean>
……

我这段里没有写那个
fixedAssetsService所在的class --------------------编程问答-------------------- 还有你的struts的配置文件是怎么写的 --------------------编程问答-------------------- 检查一下set方法
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,