[英]Spring @Autowired failed with Hibernate
當我使用Hibernate時,我有一個這樣的配置類:
@Configuration
@ComponentScan
public class HibernateConfiguration {
@Bean
public LocalSessionFactoryBean sessionFactory() {
return new LocalSessionFactoryBean();
}
}
然后,我想確保此配置類可以正常工作,因此我編寫了如下的單元測試:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HibernateConfiguration.class)
public class HibernateConfigurationTest {
@Autowired
private LocalSessionFactoryBean localSessionFactoryBean;
@Test
public void someTest(){
}
}
然后Intellij不斷告訴我該消息,並且它也編譯失敗,因此它不是Intellij錯誤:
無法自動接線。 找不到
LocalSessionFactoryBean
類型的bean。
在將LocalSessionFactoryBean
更改為SessionFactory
它可以正常工作。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = HibernateConfiguration.class)
public class HibernateConfigurationTest {
@Autowired
private SessionFactory localSessionFactoryBean;
@Test
public void someTest(){
}
}
下面是LocalSessionFactoryBean
的源代碼:
public class LocalSessionFactoryBean extends HibernateExceptionTranslator
implements FactoryBean<SessionFactory>, ResourceLoaderAware, InitializingBean, DisposableBean {
}
以下是一些版本信息:
<properties>
<springframework.version>4.0.6.RELEASE</springframework.version>
<hibernate.version>4.3.6.Final</hibernate.version>
<mysql.version>5.1.31</mysql.version>
<joda-time.version>2.3</joda-time.version>
<testng.version>6.9.4</testng.version>
<mockito.version>1.10.19</mockito.version>
<h2.version>1.4.187</h2.version>
<dbunit.version>2.2</dbunit.version>
</properties>
那么,為什么在我使用LocalSessionFactoryBean
時Spring無法自動LocalSessionFactoryBean
? 我認為我對Spring bean的類型推導有一些誤解,因為在我看來,配置類中@Bean
下面的方法將注冊一個類型為LocalSessionFactoryBean
的bean,而不是SessionFactory
,然后自動裝配應該可以正常工作,但它沒有沒錯 誰能給我一些學習資料嗎? 我試圖搜索類似的東西,卻沒有什么有用的結果。 非常感謝!
您需要注入SqlSessionFactory而不是SessionFactory。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.