spring整合hibernate时报错
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:component-scan base-package="com.BeNnovo.EmployeesManagement"/>
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:conf/jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" destroy-method="close"
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>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.BeNnovo.EmployeesManagement.coreCode.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<aop:config>
<aop:pointcut id="bussinessService"
expression="execution(public * com.BeNnovo.EmployeesManagement.coreCode.service..*.*(..))" />
<aop:advisor pointcut-ref="bussinessService"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="exists" read-only="true" />
<tx:method name="add*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<bean id="employeesDAO" class="com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmployeesDAO"></bean>
<bean id="employeesService" class="com.BeNnovo.EmployeesManagement.coreCode.service.employeesManagerment.impl.EmployeesService">
<property name="employeesDAO">
<ref local="employeesDAO"/>
</property>
</bean>
<bean id="emloyeesLeaveDAO" class="com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmloyeesLeaveDAO"></bean>
<bean id="emloyeesLeaveService" class="com.BeNnovo.EmployeesManagement.coreCode.service.employeesManagerment.impl.EmloyeesLeaveService">
<property name="emloyeesLeaveDAO">
<ref local="emloyeesLeaveDAO"/>
</property>
</bean>
</beans>
public class TestEmployeesService
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
private EmployeesService employeesService = (EmployeesService) context.getBean("employeesService");
private int page = 1;
private int rows = 10;
private long total;
private long records;
@Test
public void createEmployees()
{
EmployeesDTO employeesDTO = new EmployeesDTO();
employeesDTO.setEmployeesName("admin");
employeesDTO.setEmployeesPassword("admin");
employeesDTO.setEmployeesIdentityCard("123434");
employeesDTO.setEmpoyeesMaritalStatus(EmployeesMaritalStatus.MARRIED);
employeesDTO.setEmployeesSex(EmployeesSex.MAN);
for (int i = 0; i < 50; i++)
{
employeesDTO.setEmployeesCode("B"+i);
employeesService.createEmployees(employeesDTO);
}
}
public EmployeesService getEmployeesService()
{
return employeesService;
}
@Resource
public void setEmployeesService(EmployeesService employeesService)
{
this.employeesService = employeesService;
}
}
public class TemplateDAOImpl<T> implements TemplateDAO<T>{
private HibernateTemplate hibernateTemplate;
public void save(T entity) throws DataAccessException {
hibernateTemplate.save(entity);
}
public HibernateTemplate getHibernateTemplate()
{
return hibernateTemplate;
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate)
{
this.hibernateTemplate = hibernateTemplate;
}
}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeesDAO' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ExceptionInInitializerError
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:21)
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.<clinit>(HibernateUtil.java:11)
at com.BeNnovo.EmployeesManagement.coreCode.dao.employeesManagerment.impl.EmployeesDAO.<clinit>(EmployeesDAO.java:21)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
... 39 more
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found
at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1453)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1475)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1011)
at com.BeNnovo.EmployeesManagement.coreCode.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16)
... 48 more
整合后为什么还要去找那个/hibernate.cfg.xml
我使用的是xml方式,原来用的是annotation方式
[解决办法]
你得配置怪怪。很亂。
給你一個,你參考一下。
最好是把dao,service,controller全用spring annotation配置。
要麽全部用xml,要麽全部用annotation。 特別是跟spring結合時候,將很多東西都交由spring來管理。
<context:annotation-config/> <context:component-scan base-package="com.cybersoft4u.framework.domain"/> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <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><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <!-- BASE --> <value>com.cybersoft4u.framework.domain.SequenceNumberControl</value> <value>com.cybersoft4u.framework.domain.BaseParameterItemDef</value> <!-- EMP --> <value>com.cybersoft4u.framework.domain.emp.Department</value> <value>com.cybersoft4u.framework.domain.org.Department</value> <value>com.cybersoft4u.framework.domain.emp.Employee</value> <value>com.cybersoft4u.framework.domain.org.Employee</value> <!-- PAM --> <value>com.cybersoft4u.framework.domain.lfs.pam.CalendarLevDay</value> <value>com.cybersoft4u.framework.domain.lfs.pam.CalendarWeekEnd</value> <value>com.cybersoft4u.framework.domain.lfs.pam.LeaveType</value> <value>com.cybersoft4u.framework.domain.lfs.pam.ExtraLeave</value> <value>com.cybersoft4u.framework.domain.lfs.pam.ManageAgent</value> <!-- LEA --> <value>com.cybersoft4u.framework.domain.lfs.lev.LeaveAppForm</value> <value>com.cybersoft4u.framework.domain.lfs.lev.LeaveAppFormLog</value> <!-- STA --> <value>com.cybersoft4u.framework.domain.lfs.sta.DailyLog</value> <!-- UMP --> <value>com.cybersoft4u.framework.domain.upm.Function</value> <value>com.cybersoft4u.framework.domain.upm.Role</value> <value>com.cybersoft4u.framework.domain.upm.RoleRights</value> <value>com.cybersoft4u.framework.domain.upm.UserRights</value> <!-- PFM --> <value>com.cybersoft4u.framework.domain.pfm.CRInfo</value> <value>com.cybersoft4u.framework.domain.pfm.FileUploadInfo</value> <value>com.cybersoft4u.framework.domain.pfm.LogDetailInfo</value> <value>com.cybersoft4u.framework.domain.pfm.LogInfo</value> <value>com.cybersoft4u.framework.domain.pfm.ProjectInfo</value> <value>com.cybersoft4u.framework.domain.pfm.ProjectUserInfo</value> <value>com.cybersoft4u.framework.domain.pfm.WorksInfo</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="javax.persistence.validation.mode">none</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop> <prop key="hibernate.connection.release_mode">auto</prop> </props> </property> </bean> <!-- 事務管理 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <tx:annotation-driven transaction-manager="transactionManager" /> <aop:config> <aop:pointcut expression="execution(* com.cybersoft4u.framework.persistence..*.*(..)) and execution(* com.cybersoft4u.framework.service..*.*(..))" id="allManagerMethod"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/> </aop:config>
[解决办法]