spring 注入问题

zhbAdnim 2016-10-18 09:50:16
很简单的ssh框架整合,搭建好后项目部署没有出错,运行后尝试添加一条数据出现
java.lang.NullPointerException, null
spring没有帮我注入,导致accountAction 的accountDAO为空
找了好久都没有找到问题的根源
applicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/asirt_bbs?useUnicode=true&characterEncoding=utf-8">
</property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="show_sql">true</prop>
</props>
</property>

<property name="mappingResources">
<list>
<value>org/asirt/entity/account.hbm.xml</value>
</list>
</property>
</bean>


<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />


<bean id="accountImpl" class="org.asirt.dao.imlp.accountImlp">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<bean id="accountAction" class="org.asirt.action.accountAction">
<property name="accountDAO" ref="accountImpl"></property>
</bean>


accountDAO.java【接口】

/**
* @author asirt
*
*/
public interface accountDAO {

public boolean saveAccount(account account);

}


accountImlp.java【实现类】

public class accountImlp implements accountDAO{
private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}


@Override
public boolean saveAccount(account account) {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
session.save(account);
ts.commit();
session.close();
return true;
}

}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">


<struts>
<package name="default" extends="struts-default">

<action name="account-go_add" class="org.asirt.action.accountAction" method="go_add">
<result name="go_add">add.html</result>
</action>

<action name="account-add" class="org.asirt.action.accountAction" method="add">
<result name="success">success.html</result>
</action>
</package>

</struts>


accountAction.java【Action类】

package org.asirt.action;

import org.apache.catalina.User;
import org.asirt.dao.accountDAO;
import org.asirt.entity.account;

import com.opensymphony.xwork2.ActionSupport;

public class accountAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -453090639825021968L;

private account account;
private accountDAO accountDAO;

public String go_add() throws Exception{
return"go_add";
}
public String add() throws Exception{
System.out.println(account);
System.out.println(accountDAO);
if(account!=null){
accountDAO.saveAccount(account);
System.out.println("hah");
}
return"success";
}

public account getAccount() {
return account;
}

public void setAccount(account account) {
this.account = account;
}

public accountDAO getAccountDAO() {
return accountDAO;
}

public void setAccountDAO(accountDAO accountDAO) {
this.accountDAO = accountDAO;
}

}


...全文
730 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24065257 2016-10-27
  • 打赏
  • 举报
回复
第一,你的bean文件中的action没有设定是多例scope="prototype",加这个属性,第二你struts中的action的class应该是bean文件中的action的name或id属性。这样才能注入。详细的你可以在网上搜索一个demo看。主要看下两个配置文件
游一游走一走 2016-10-26
  • 打赏
  • 举报
回复
请贴出struts2与spring集成的代码,比如说

  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
struts2-spring-plugin-2.1.8.jar
Tlsy123 2016-10-26
  • 打赏
  • 举报
回复
private accountDAO accountDAO; 兄弟,你这个有问题吧
zww 2016-10-25
  • 打赏
  • 举报
回复
注入失败,试试每个配置文件中加上 <context:annotation-config/>试试
wonezm 2016-10-19
  • 打赏
  • 举报
回复
全蛋说的对,xml里的名字要和action中使用的名字一致,不然找不到
___d 2016-10-19
  • 打赏
  • 举报
回复
accountImlp  实现类名跟applicationContext.xml 中名字一样? 贴的代码看是不一样
  • 打赏
  • 举报
回复
注意命名规范
zhbAdnim 2016-10-19
  • 打赏
  • 举报
回复
问题未解决 求大神
zhbAdnim 2016-10-19
  • 打赏
  • 举报
回复
引用 9 楼 bcsflilong 的回复:
我真没看出来你写的有什么问题
我刚接触,个人强迫症 一直在找 找不到!!
bcsflilong 2016-10-19
  • 打赏
  • 举报
回复
我真没看出来你写的有什么问题
zhbAdnim 2016-10-19
  • 打赏
  • 举报
回复
引用 7 楼 u014181631 的回复:
aop呢??
不配置 AOP 不行?
___d 2016-10-19
  • 打赏
  • 举报
回复
aop呢??
zhbAdnim 2016-10-19
  • 打赏
  • 举报
回复
引用 2 楼 qnmdcsdn 的回复:
注意命名规范
好的 这个我以后会非常注意
zhbAdnim 2016-10-19
  • 打赏
  • 举报
回复
引用 3 楼 u014181631 的回复:
accountImlp  实现类名跟applicationContext.xml 中名字一样? 贴的代码看是不一样
是不一样但是 应该没有太大关系,bean的name 不一定要和类的名字一样吧?? 我刚刚该回来了 还是不行 运行的时候还是没有注入
zhbAdnim 2016-10-18
  • 打赏
  • 举报
回复
求大神帮忙看下是什么问题 下面是运行后的错误信息 org.asirt.entity.account@20fc7a4a null 21:36:22.593 [http-nio-8080-exec-2] ERROR org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: [java.lang.NullPointerException, null]

67,538

社区成员

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

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