2016-05-18 3 views
0

org.springframework.beans.factory.BeanCurrentlyInCreationException:名前 'sessionFactoryMaster'を持つBeanの作成中にエラーが発生しました:現在作成中のFactoryBeanがnullを返しましたgetObjectorg.springframework.beans.factory.BeanCurrentlyInCreationException:名前 'sessionFactoryMaster'を持つBeanの作成中にエラーが発生しました:

<bean id="sessionFactoryMaster" 
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="true"> 
<property name="dataSource" ref="dataSourceMaster" /> 
<property name="packagesToScan"> 
    <list> 
     <value>com.XXXXX.common.hibernate.entities</value> 
    </list> 
</property> 

<property name="entityInterceptor" ref="auditInterceptor" /> 
</bean> 


<bean id="auditTrailsDaoImpl" class="com.XXXXX.domain.dao.impl.AuditTrailsDaoImpl"> 
    <property name="sessionFactory" ref="sessionFactoryMaster" /> 
</bean> 

<bean id="auditInterceptor" 
    class="com.XXXXX.interceptors.AuditInterceptor" lazy-init="true" > 
    <property name="auditTrailsDao" ref="auditTrailsDaoImpl" /> 

</bean> 

エラーと解決方法の原因はありますか?

答えて

0

設定に循環依存があります。 sessionFactoryMasterにはauditTrailsDaoを必要とするauditInterceptorオブジェクトが必要です。auditTrailsDaoには、現在作成中のsessionFactoryMaster Beanが必要です。

代わりにauditTrailsDao/auditInterceptorをdataSourceに依存させることを検討してください。また、あなたのauditTrailsDaoあなたはApplicationContextAwareを実装することにより、ApplicationContextのあなたのBeanが認識させるとのSessionFactoryへの参照を取得するために使用してgetBean方法でセッションファクトリを検索することができます

public class AuditTrailsDao{ 

    public void saveTrail(AuditTrail auditTrail){ 
     SessionFactory sessionFactory = lookupSessionFactory(); 
     //save trail 
    } 
} 

の周りに作品としてのSessionFactoryを検索することができます。これはあなたのアプリケーションをSpringと結びつけるのでお勧めできません。

しかしそこ春のAPIからアプリケーションを切り離すためにServiceLocatorFactoryBeanを使用するための機構であるが、それでも、あなたのコンポーネントが依存関係を検索することができ

http://docs.spring.io/autorepo/docs/spring/4.0.3.RELEASE/javadoc-api/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.html

関連する問題