lazy init=";“真的”;从Spring 3.2开始,在LocalContainerEntityManagerFactoryBean上被忽略
从Spring 3.2开始,LocalContainerEntityManagerFactoryBean上的Set lazy init=“true”将被忽略。我已经将一个应用程序从Spring3.0移植到3.2。LocalContainerEntityManagerFactoryBean的lazy init在Spring3.0中可以正常工作,但在3.2中不行lazy init=";“真的”;从Spring 3.2开始,在LocalContainerEntityManagerFactoryBean上被忽略,spring,hibernate,spring-3,Spring,Hibernate,Spring 3,从Spring 3.2开始,LocalContainerEntityManagerFactoryBean上的Set lazy init=“true”将被忽略。我已经将一个应用程序从Spring3.0移植到3.2。LocalContainerEntityManagerFactoryBean的lazy init在Spring3.0中可以正常工作,但在3.2中不行 <bean id="entityManagerFactory" class="de.gillardon.base.hiber
<bean id="entityManagerFactory"
class="de.gillardon.base.hibernate.internal.EntityManagerFactoryBean"
lazy-init="true">
<property name="persistenceProviderClass"
value="org.hibernate.ejb.HibernatePersistence"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaProperties" ref="jpaProperties"/>
</bean>
当LocalContainerEntityManagerFactoryBean实现LoadTimeWeaverAware时,即使lazy init=true,它也会被初始化。这是预期的行为还是错误?我在文档中找不到有关此行为的任何提示。
lazy init
仅将bean的初始化延迟到从上下文请求它们的那一刻。通过引用它的bean,或者当需要自动连接时(例如使用@PersistentContext
)。确保情况不是这样,我知道。但是该应用程序在Spring3.0中按预期工作。看来这是罪魁祸首。您可能希望向其添加注释,或者更好地创建另一个JIRA问题,提及可能需要在API或文档中指定的lazy init副作用。
org.springframework.context.support.AbstractApplicationContext.
finishBeanFactoryInitialization(ConfigurableListableBeanFactory)
...
// Initialize LoadTimeWeaverAware beans early to allow for registering their transformers early.
String[] weaverAwareNames = beanFactory.getBeanNamesForType(LoadTimeWeaverAware.class, false, false);
for (String weaverAwareName : weaverAwareNames) {
getBean(weaverAwareName);
}