如何在Spring 3.0中注册自定义PersistenceAnnotationBeanPostProcessor

我想覆盖PersistenceAnnotationBeanPostProcessor,它会在我插入context:component-scan标签后立即注册.

我尝试注册一个具有相同名称的bean,但spring仍然注册了原始的后处理器bean.

我的目标是提供一个覆盖版本的findDefaultEntityManager方法,这将使我在同一个容器中声明两个EntityManagers.

注意:我在Spring 2.5.6上运行了2个EM上下文,但在迁移到3.0.5.RELEASE版本时它被破坏了.

最佳答案
我发现这个解决方法对我有用(Spring 3.2.7):

<bean id="org.springframework.context.annotation.internalPersistenceAnnotationProcessor"
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" >
<property name="defaultPersistenceUnitName" value="entityManagerFactory"/>
</bean> 

这将覆盖Spring加载的默认PersistenceAnnotationBeanPostProcessor,并使用defaultPersistenceUnitName创建一个新的.您必须使用自动加载此bean时使用的bean名称Spring(这是默认行为).我不得不查看org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors()来找出这个名字.

转载注明原文:如何在Spring 3.0中注册自定义PersistenceAnnotationBeanPostProcessor - 代码日志