日期:2014-05-20  浏览次数:20617 次

40分诚心求解:spring 注入sessionfactory 报nullpoint exception 错误!
简单的用户登录 ,输入用户名和密码 ,struts2的action 查找数据库,匹配则跳到成功页面,否则到登录页面.
spring用注解的方式.
下面是主要配置文件:
applicationContext.xml:
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
  <property name="driverClassName" value="org.postgresql.Driver"></property>
  <property name="url" value="jdbc:postgresql://localhost/myssh"></property>
  <property name="username" value="postgres"></property>
  <property name="password" value="000000"></property>
  </bean>

  <bean id="SessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource">
  <ref local="myDataSource" />
  </property>  
  <property name="hibernateProperties">
  <value>
  hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect//数据库我用的是postgresql
  </value>
  </property>
  </bean>
下面为测试代码:
@Resource(name="sessionfactory")
private static SessionFactory sessionFactory;

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setSessionFactory(SessionFactory sessionFactory) {
testconfiguration.sessionFactory = sessionFactory;
}
@Test
public static void test() {

String hql="from oa_user";

Session session=sessionFactory.openSession();//这行报错!
List list=session.createQuery(hql).list();
User u=(User)list.get(0);
System.out.println(list);
session.close();

------解决方案--------------------
初步怀疑是sessionFactory为NULL,好像没有用到getSessionFactory()~
你把报的错误贴出来看看
------解决方案--------------------
楼上对了,这里提供一种修改方法在applicationContext.xml加入配置
<bean id="getsession" class="测试类路径" factory-method="getSession"></bean>
------解决方案--------------------
请lz注意以下两点:
1,当使用@Resource注解时请确保此测试类必须由spring管理,也就是说要将你所写的测试类也放到spring的容器中;
2,好像不能给静态属性或方法注入吧?虽然我没有测试过。请lz将
public static void setSessionFactory(SessionFactory sessionFactory)的中方法static去掉,并将@Resource放到此方法上。
------解决方案--------------------
静态的和非静态的都可以注入,方法注入要在配置文件中明确给出,不给出是不会被加载的
------解决方案--------------------
不好意思,看错问题了,5楼正解
------解决方案--------------------
如果楼主单纯是为了hibernate而用spring的话,建议用struts2的hibernate plugin代替。