Java Hibernate Spring MVC注入自动连线问题

Java Hibernate Spring MVC注入自动连线问题,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我试图学习SpringMVC和Hibernate,因为我认为它很简单,而且那些注释看起来很有趣。但我错了。那些注释令人头痛,而且很难调试。有人能帮我调试一下吗 这是我的spring servlet: <context:component-scan base-package="com.isad" /> <mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resource

我试图学习SpringMVC和Hibernate,因为我认为它很简单,而且那些注释看起来很有趣。但我错了。那些注释令人头痛,而且很难调试。有人能帮我调试一下吗

这是我的spring servlet:

<context:component-scan base-package="com.isad" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" cache-period="31556926"/>

<!-- 
    Initialize base viewers 
--> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/jsp/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="sessionFactory" scope="singleton"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>

<bean id="employeeDao" class="com.isad.dao.impl.EmployeeDaoImpl" />
<bean id="employeeManager" class="com.isad.service.impl.EmployeeManagerImpl" />

<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- Springs Hibernate Transaction Manager -->
<bean id ="transactionManager" class = "org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name = "sessionFactory" ref = "sessionFactory"/>
</bean>
我的刀:

@Repository
public class EmployeeDaoImpl implements EmployeeDAO {
@Autowired
private SessionFactory sessionFacoty;

@Override
public void addEmployee(EmployeeEntity employee) {
    this.sessionFacoty.getCurrentSession().save( employee );
}

@SuppressWarnings("unchecked")
@Override
public List<EmployeeEntity> getAllEmployee() {
    return this.sessionFacoty.getCurrentSession()
            .createQuery("FROM EmployeeEntity").list();
}

@Override
public void deleteEmployee(Integer employeeId) {
    EmployeeEntity employee = (EmployeeEntity) sessionFacoty
                                .getCurrentSession()
                                .load(EmployeeEntity.class, employeeId);

    if( null != employee ) {
        this.sessionFacoty.getCurrentSession().delete(employee);
    }
}
因此,当我运行我的索引页时,会出现以下错误:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeManagerImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.isad.dao.EmployeeDAO com.isad.service.impl.EmployeeManagerImpl.employeeDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeDaoImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.isad.dao.impl.EmployeeDaoImpl.sessionFacoty; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at   org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire   field: private com.isad.dao.EmployeeDAO    com.isad.service.impl.EmployeeManagerImpl.employeeDao; nested exception is    org.springframework.beans.factory.BeanCreationException: Error creating bean with name    'employeeDaoImpl': Injection of autowired dependencies failed; nested exception is    org.springframework.beans.factory.BeanCreationException: Could not autowire field: private    org.hibernate.SessionFactory com.isad.dao.impl.EmployeeDaoImpl.sessionFacoty; nested   exception is org.springframework.beans.factory.BeanCreationException: Error creating bean   with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]:   Invocation of init method failed; nested exception is java.lang.NullPointerException
at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredF ieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
at  org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java :87)
at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
... 22 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeDaoImpl': Injection of autowired dependencies failed; nested exception is   org.springframework.beans.factory.BeanCreationException: Could not autowire field: private  org.hibernate.SessionFactory com.isad.dao.impl.EmployeeDaoImpl.sessionFacoty; nested  exception is org.springframework.beans.factory.BeanCreationException: Error creating bean  with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]:  Invocation of init method failed; nested exception is java.lang.NullPointerException
at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(Ab stractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 24 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.isad.dao.impl.EmployeeDaoImpl.sessionFacoty; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
... 35 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 37 more
Caused by: java.lang.NullPointerException
at  org.apache.catalina.loader.WebappClassLoader.findLoadedResource(WebappClassLoader.java:3342)
at org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1499)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:761)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2255)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2227)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2207)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2160)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2111)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:329)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
... 47 more
我要怎么做才能修复崩溃?

您有打印错误

@Autowired
private SessionFactory sessionFacoty;                                                              
改为

@Autowired
private SessionFactory sessionFactory;
你的问题是

<mapping resource="com.isad.model.EmployeeEntity"/>

该声明应该指向一个XML资源,该资源可用于生成类型的映射

你可能想要

<mapping class="com.isad.model.EmployeeEntity"/> // or whatever your class name is
//或者不管你的类名是什么

请发布完整的堆栈跟踪。我刚刚更新了堆栈跟踪。您的
hibernate.cfg.xml
位于哪里?它位于我的src/main/resource中。我相信hibernate.cfg.xml不在您的类路径上。它是否从src/main/resources复制到类加载器可以找到的位置,例如war或jar文件中的classes目录中?这会有什么变化?错误消息清楚地表明,
sessionFacoty
无法自动连接。该字段很好。感谢您指出(typo=),但只要我始终使用sessionFatory,就不会有问题。如果没有使用此名称指定bean,它如何找到sessionFacoty?您是对的。我应该使用类而不是资源。多谢各位
@Autowired
private SessionFactory sessionFacoty;                                                              
@Autowired
private SessionFactory sessionFactory;
<mapping resource="com.isad.model.EmployeeEntity"/>
<mapping class="com.isad.model.EmployeeEntity"/> // or whatever your class name is