spring最简单的问题,sessionFactory无法注入

wangyu1221 2009-04-14 11:53:40
今天刚接触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.java

package 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。

不知道哪里出了问题?
...全文
3145 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
java_MagicWang 2012-02-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chenleicom 的回复:]
<bean id="userDao" class="com.UserDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>


应该是这部分错了 。 因为没注入到DAO里面去
楼主把<ref bean="" /> 改成<ref loca……
[/Quote]
我也遇到了这个问题,每次都是页面报空指针,改成了local也是一样,怀疑是action没写好
chenleicom 2009-04-17
  • 打赏
  • 举报
回复
可以这么说 <ref bean="" /> 是寻找全局中到bean
<ref local="" />是寻找本xml文件中到bean
wangyu1221 2009-04-16
  • 打赏
  • 举报
回复
谢谢,果然可以。

请问,<ref bean="" /> 和 <ref local=""/>什么区别呢?
chenleicom 2009-04-16
  • 打赏
  • 举报
回复
<bean id="userDao" class="com.UserDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>


应该是这部分错了 。 因为没注入到DAO里面去
楼主把<ref bean="" /> 改成<ref local=""/>试试看
wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
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启动的日志,也没有异常
wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
就是不知道错在哪里。。

如果在login里面用this.getSessionFactory().get(User.class, new Integer(1));就抛出NullPointerException
zhj92lxs 2009-04-15
  • 打赏
  • 举报
回复
有什么错没有
wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
是不是因为servlet里面的UserDaoImpl 是new出来的所以造成注入失败?

然后我做了调整,把servlet的类也写到applicationContext里面,但是还是不行,掉哟个login抛出空指针异常。
wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
所有的包

有个asm2.2.3删掉了

wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yangfeitarena 的回复:]
this.getSessionFactory()取得的是Hibernate创建的sessionfactory,而你项目中的sessionfactory是让spring帮你创建的,所以你取得的是null.既然session交给了spring来管理,你要在类中进行数据库操作,就只有用getHibernateTemplate().
[/Quote]

我换成
System.out.println(this.getHibernateTemplate());
控制台输出还是null
yangfeitarena 2009-04-15
  • 打赏
  • 举报
回复
this.getSessionFactory()取得的是Hibernate创建的sessionfactory,而你项目中的sessionfactory是让spring帮你创建的,所以你取得的是null.既然session交给了spring来管理,你要在类中进行数据库操作,就只有用getHibernateTemplate().
wangyu1221 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Study_Work_2009 的回复:]
spring注入问题
[/Quote]

怎么解决
chenleicom 2009-04-15
  • 打赏
  • 举报
回复
学习
Study_Work_2009 2009-04-15
  • 打赏
  • 举报
回复
spring注入问题

67,513

社区成员

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

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