Hibernate4整合Spring3的时候 获取session报空指针异常
Irsin 2016-08-01 11:37:32 Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.mfl.Controller.DAOImpl.tUserDAOImpl]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:76)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:990)
... 64 more
Caused by: java.lang.NullPointerException
at com.mfl.Controller.DAOImpl.tUserDAOImpl.<init>(tUserDAOImpl.java:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
... 66 more
2016-8-1 11:07:41 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [jsp] in context with path [/ERP] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
这是部分错误信息
com.mfl.Controller.DAOImpl.tUserDAOImpl
@Repository
public class tUserDAOImpl implements tUserDAO {
private SessionFactory sessionFactory;public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
Session session = sessionFactory.openSession();
@Override
public void Add(tUser u) {
session.save(u);
System.out.println("tUser的add方法...实现类");
}
@Override
public List<tUser> Qeury(String name) {
//执行了未检查的转换时的警告
@SuppressWarnings("unchecked")
List<tUser> list = (List<tUser>) session.createQuery("from tUser");
Iterator<tUser> it = list.iterator();
while (it.hasNext()) {
tUser u = (tUser) it.next();
System.out.println(u);
}
return list;
}}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 下面的listener,是spring提供的,它会在创建时自动查找WEB-INF下的applicationContext.xml文件 ,从而创建spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 查找spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
</param-value>
</context-param>
<filter>
<filter-name>openSessionInVieFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<!-- 指定在spring配置的sessionFactory -->
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openSessionInVieFilter</filter-name>
<servlet-name>/*</servlet-name>
</filter-mapping>
<!-- 下面的配置信息,用来配置说明使用struts过滤器 -->
<filter>
<filter-name>
struts2
</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<!--下面的配置表示对于所有请求都交给struts来处理。-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd"
default-lazy-init="true">
<!-- 此处的bean是告诉spring去哪里找jdbc有关的配置文件 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>WEB-INF/jdbc.properties</value>
</property>
</bean>
<!-- 启用注解注入 -->
<context:annotation-config/>
<!-- 包扫描的方式加载注解类(推荐) -->
<context:component-scan base-package="com.mfl"></context:component-scan>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 配置sessionFactory -->
<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.OracleDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingLocations">
<list>
<value>classpath:com/mfl/Entities/*.hbm.xml</value>
</list>
</property>
</bean>
<!-- 1、配置一个事务管理器txManager 配置此事务管理器时,需要提供一个已经配置的SessionFactory -->
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事物管理通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<!-- 事物的传播特性 -->
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* com.mfl.Service..*.*(..))" id="fooServiceOperation"/>
<aop:advisor advice-ref="tUserService" pointcut-ref="fooServiceOperation"/>
</aop:config>
<!-- 用注解来实现事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 配置action -->
<bean id="tUserDAOImpl" class="com.mfl.Controller.DAOImpl.tUserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="tUserService" class="com.mfl.Service.tUserService">
<property name="tUserDAOImpl" ref="tUserDAOImpl"></property>
</bean>
<bean id="tUserAction" class="com.mfl.Aciton.tUserAction">
<property name="tUserService" ref="tUserService"> </property>
</bean>
</beans>
.
有没有大神帮忙看看啊谢谢啦啦啦啦
之前看到说hibernate4整合spring3的时候直接用sessionfactory属性就好了 可是现在一直都报session是空指针