2016-02-24 3 views
1

Autowiring se passe parfaitement et tout fonctionne bien. Mais j'ai besoin de savoir comment usine de session est injecté dans HibernateTransactionManager en utilisant LocalSessionFactoryBean si aucune relation entre LocalSessionFactoryBean classe et SessionFactory interface.Comment Hibernate SessionFactory s'autodirecte en utilisant LocalSessionFactoryBean?

PFB le code i utilisé dans mon projet

<beans:bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <beans:property name="sessionFactory" 
      ref="localSessionFactoryBean" /> 
    </beans:bean> 
<beans:bean id="localSessionFactoryBean" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <beans:property name="dataSource" ref="dataSource" /> 
       <beans:property name="hibernateProperties"> 
      <beans:props> 
       <beans:prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect 
       </beans:prop> 
       <beans:prop key="hibernate.show_sql">true</beans:prop> 
      </beans:props> 
     </beans:property> 
    </beans:bean> 

Dans le code ci-dessus, je suis injectait LocalSessionFactoryBean pour sessionFactory à HibernateTransactionManager.

Veuillez expliquer comment sessionFactory est initialisé en HibernateTransactionManager à partir de LocalSessionFactoryBean en utilisant l'annotation pilotée en détail.

Répondre

1

LocalSessionFactoryBean implémente FactoryBean<SessionFactory>. Ainsi, lorsque Spring définit sessionFactory sur HibernateTransactionManager, il appelle getObject() méthodes de LocalSessionFactoryBean et obtient SessionFactory.

public class LocalSessionFactoryBean extends HibernateExceptionTranslator 
     implements FactoryBean<SessionFactory> { 

    public SessionFactory getObject() { 
     return this.sessionFactory; 
    } 

} 

What's a FactoryBean?