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不能注入的原因吧。希望楼主仔细检查一下代码。 --------------------编程问答--------------------
能说的明白点吗?action一定要用Spring来管理呢?
如果用Spring来管理又如果实现呢?
--------------------编程问答-------------------- fixedAssetsService没有注入
<bean name="example" class="example.MoreSubmitAction">
<property name="fixedAssetsService" ref="fixedAssetsService"></property>
</bean>
<bean id="fixedAssetsService" class=""></bean>
--------------------编程问答--------------------
这段加进去也没有用啊,还是不行的 --------------------编程问答-------------------- 有哪位高手过来指点一下的 --------------------编程问答-------------------- 路过的 貌似没注入好 --------------------编程问答-------------------- @Autowired
private FixedAssetsServiceImpl fixedAssetsService;
应改为
private fixedAssetsService fixedAssetsService1; --------------------编程问答-------------------- 不对,可能是sessionFactory为null,或者struts2和spring整合时有问题 --------------------编程问答--------------------
我这段里没有写那个
fixedAssetsService所在的class --------------------编程问答-------------------- 还有你的struts的配置文件是怎么写的 --------------------编程问答-------------------- 检查一下set方法
补充:Java , Java EE