SessionFactory注入不起作用

我的SessionFactory没有被注入SessionFactory变量。 我的配置如下:

                           org.hibernate.dialect.MySQLDialect true update true org.hibernate.cache.HashtableCacheProvider             

HibernateUtil.class

 package com.csu.library.mvc.hibernate; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.orm.hibernate4.HibernateExceptionTranslator; import org.springframework.orm.hibernate4.HibernateTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; @org.springframework.context.annotation.Configuration @EnableTransactionManagement public class HibernateUtil { @Autowired @Qualifier("sessionFactory") private SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } @Bean public HibernateTransactionManager transactionManager() { return new HibernateTransactionManager(getSessionFactory()); } @Bean public HibernateExceptionTranslator exceptionTranslator() { return new HibernateExceptionTranslator(); } } 

调用getSessionFactory()方法时,程序抛出NullPointerException 。 显然,sessionFactory没有被注入。 该计划启动正常。 可能是什么问题呢?

注入如下,它会工作正常

 @Autowired @Qualifier("sessionFactory") private SessionFactory sessionFactory; public Session getSession() { return sessionFactory.getCurrentSession(); } 

希望能帮到你:)

在某些Spring版本中,不扫描子文件夹。 在com.csu.library.mvc包中移动您的类,或者在扫描的包中添加包com.csu.library.mvc.hibernate并尝试一下。

您将需要使用org.springframework.beans.factory.annotation.Autowired注释而不是javax.inject.Inject

 @Autowired private SessionFactory sessionFactory; 

请注意,仅查找在其定义的同一应用程序上下文中的bean上的注释。这意味着,如果为DispatcherServlet放入WebApplicationContext,它只检查控制器中的 @Autowired bean,而不检查您的服务。