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,而不检查您的服务。