簡體   English   中英

Spring @Autowired因Hibernate失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM