今天刚接触spring,照着例子做。
applicationContext.xml<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property>
<property name="url" value="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=ormerp_supply"></property>
<property name="username" value="sa"></property>
<property name="password" value="qwerty12345"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>
com/User.hbm.xml
</value>
</list>
</property>
</bean>
<bean id="userDao" class="com.UserDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>数据库链接是没有问题的,其他项目里正常。
UserDaoImpl.javapackage com;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class UserDaoImpl extends HibernateDaoSupport implements UserDao { @Override
public void login() {
// TODO Auto-generated method stub
System.out.println(this.getSessionFactory());
}}
login里面什么都不做就输出sessionFactory,但是输出是null。不知道哪里出了问题?

解决方案 »

  1.   

    就是不知道错在哪里。。如果在login里面用this.getSessionFactory().get(User.class, new Integer(1));就抛出NullPointerException
      

  2.   

    09-04-15 00:07:30  INFO Http11AprProtocol:121 - Initializing Coyote HTTP/1.1 on http-8080
     09-04-15 00:07:30  INFO AjpAprProtocol:189 - Initializing Coyote AJP/1.3 on ajp-8009
     09-04-15 00:07:30  INFO Catalina:511 - Initialization processed in 453 ms
     09-04-15 00:07:30  INFO StandardService:442 - Starting service Catalina
     09-04-15 00:07:30  INFO StandardEngine:431 - Starting Servlet Engine: Apache Tomcat/5.5.20
     09-04-15 00:07:30  INFO StandardHost:716 - XML validation disabled
     09-04-15 00:07:31 DEBUG [/manager]:3747 - Sending application start events
     09-04-15 00:07:31 DEBUG [/manager]:3622 - Starting filters
     09-04-15 00:07:31 DEBUG [/GoogleSuggest]:3747 - Sending application start events
     09-04-15 00:07:31 DEBUG [/GoogleSuggest]:3622 - Starting filters
     09-04-15 00:07:31 DEBUG [/MyJobNet]:3747 - Sending application start events
     09-04-15 00:07:31 DEBUG [/MyJobNet]:3622 - Starting filters
     09-04-15 00:07:31 DEBUG [/SpringTest]:3708 -  Configuring event listener class 'org.springframework.web.context.ContextLoaderListener'
     09-04-15 00:07:31 DEBUG [/SpringTest]:3747 - Sending application start events
     09-04-15 00:07:31  INFO [/SpringTest]:646 - Initializing Spring root WebApplicationContext
     09-04-15 00:07:31  INFO ContextLoader:178 - Root WebApplicationContext: initialization started
     09-04-15 00:07:31  INFO XmlWebApplicationContext:378 - Refreshing org.springframework.web.context.support.XmlWebApplicationContext@16fcc4: display name [Root WebApplicationContext]; startup date [Wed Apr 15 00:07:31 CST 2009]; root of context hierarchy
     09-04-15 00:07:32  INFO XmlBeanDefinitionReader:303 - Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
     09-04-15 00:07:33  INFO XmlWebApplicationContext:393 - Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@16fcc4]: org.springframework.beans.factory.support.DefaultListableBeanFactory@14dba7f
     09-04-15 00:07:33  INFO DefaultListableBeanFactory:276 - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14dba7f: defining beans [dataSource,sessionFactory,userDao]; root of factory hierarchy
     09-04-15 00:07:33  INFO Environment:479 - Hibernate 3.1.3
     09-04-15 00:07:33  INFO Environment:509 - hibernate.properties not found
     09-04-15 00:07:33  INFO Environment:525 - using CGLIB reflection optimizer
     09-04-15 00:07:33  INFO Environment:555 - using JDK 1.4 java.sql.Timestamp handling
     09-04-15 00:07:34  INFO HbmBinder:309 - Mapping class: com.User -> hr_Employee
     09-04-15 00:07:34  INFO LocalSessionFactoryBean:743 - Building new Hibernate SessionFactory
     09-04-15 00:07:34  INFO ConnectionProviderFactory:72 - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
     09-04-15 00:07:34  INFO SettingsFactory:77 - RDBMS: Microsoft SQL Server, version: 08.00.2055
     09-04-15 00:07:34  INFO SettingsFactory:78 - JDBC driver: jTDS Type 4 JDBC Driver for MS SQL Server and Sybase, version: 1.2.2
     09-04-15 00:07:34  INFO Dialect:103 - Using dialect: org.hibernate.dialect.SQLServerDialect
     09-04-15 00:07:34  INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions)
     09-04-15 00:07:34  INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
     09-04-15 00:07:34  INFO SettingsFactory:125 - Automatic flush during beforeCompletion(): disabled
     09-04-15 00:07:34  INFO SettingsFactory:129 - Automatic session close at end of transaction: disabled
     09-04-15 00:07:34  INFO SettingsFactory:144 - Scrollable result sets: enabled
     09-04-15 00:07:34  INFO SettingsFactory:152 - JDBC3 getGeneratedKeys(): enabled
     09-04-15 00:07:34  INFO SettingsFactory:160 - Connection release mode: on_close
     09-04-15 00:07:34  INFO SettingsFactory:187 - Default batch fetch size: 1
     09-04-15 00:07:34  INFO SettingsFactory:191 - Generate SQL with comments: disabled
     09-04-15 00:07:34  INFO SettingsFactory:195 - Order SQL updates by primary key: disabled
     09-04-15 00:07:34  INFO SettingsFactory:338 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
     09-04-15 00:07:34  INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory
     09-04-15 00:07:34  INFO SettingsFactory:203 - Query language substitutions: {}
     09-04-15 00:07:34  INFO SettingsFactory:209 - Second-level cache: enabled
     09-04-15 00:07:34  INFO SettingsFactory:213 - Query cache: disabled
     09-04-15 00:07:34  INFO SettingsFactory:325 - Cache provider: org.hibernate.cache.EhCacheProvider
     09-04-15 00:07:34  INFO SettingsFactory:228 - Optimize cache for minimal puts: disabled
     09-04-15 00:07:34  INFO SettingsFactory:237 - Structured second-level cache entries: disabled
     09-04-15 00:07:34  INFO SettingsFactory:264 - Statistics: disabled
     09-04-15 00:07:34  INFO SettingsFactory:268 - Deleted entity synthetic identifier rollback: disabled
     09-04-15 00:07:34  INFO SettingsFactory:283 - Default entity-mode: pojo
     09-04-15 00:07:34  INFO SessionFactoryImpl:154 - building session factory
     09-04-15 00:07:34  WARN Configurator:126 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/SpringTest/WEB-INF/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
     09-04-15 00:07:35  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
     09-04-15 00:07:35  INFO ContextLoader:198 - Root WebApplicationContext: initialization completed in 4062 ms
     09-04-15 00:07:35 DEBUG [/SpringTest]:3622 - Starting filters
     09-04-15 00:07:35  INFO Http11AprProtocol:151 - Starting Coyote HTTP/1.1 on http-8080
     09-04-15 00:07:35  INFO AjpAprProtocol:217 - Starting Coyote AJP/1.3 on ajp-8009
     09-04-15 00:07:35  INFO StoreLoader:229 - Find registry server-registry.xml at classpath resource
     09-04-15 00:07:36  INFO Catalina:559 - Server startup in 5391 ms
    这是tomcat启动的日志,也没有异常
      

  3.   

    this.getSessionFactory()取得的是Hibernate创建的sessionfactory,而你项目中的sessionfactory是让spring帮你创建的,所以你取得的是null.既然session交给了spring来管理,你要在类中进行数据库操作,就只有用getHibernateTemplate().
      

  4.   


    我换成
    System.out.println(this.getHibernateTemplate());
    控制台输出还是null
      

  5.   

    是不是因为servlet里面的UserDaoImpl 是new出来的所以造成注入失败?然后我做了调整,把servlet的类也写到applicationContext里面,但是还是不行,掉哟个login抛出空指针异常。
      

  6.   

     <bean id="userDao" class="com.UserDaoImpl">
            <property name="sessionFactory">
                <ref bean="sessionFactory"/>
            </property>
        </bean>
    应该是这部分错了 。 因为没注入到DAO里面去   
    楼主把<ref bean="" /> 改成<ref local=""/>试试看
      

  7.   

    谢谢,果然可以。请问,<ref bean="" /> 和 <ref local=""/>什么区别呢?
      

  8.   

    可以这么说 <ref bean="" /> 是寻找全局中到bean
    <ref local="" />是寻找本xml文件中到bean
      

  9.   

    我也遇到了这个问题,每次都是页面报空指针,改成了local也是一样,怀疑是action没写好