как зарегистрировать пользовательский PersistenceAnnotationBeanPostProcessor весной 3.0 - PullRequest
6 голосов

Я хотел бы переопределить PersistenceAnnotationBeanPostProcessor, который регистрируется, как только я вставляю тег context: scan-scan.

Я пытался зарегистрировать бин с тем же именем, но Spring по-прежнему регистрирует оригиналpostprocessor bean.

Моя цель - предоставить переопределенную версию метода findDefaultEntityManager, которая позволит мне объявить два EntityManager в одном контейнере.

Примечание: у меня контекст 2 EM, работающий на весне2.5.6, но он выходит из строя при переходе на 3.0.5.RELEASE версия.

Ответы [ 2 ]

5 голосов
/ 28 июля 2014

Я обнаружил, что этот обходной путь сработал для меня (Spring 3.2.7):

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

Это переопределило бы сохраненный по умолчанию PersistenceAnnotationBeanPostProcessor с новым defaultPersistenceUnitName.У вас есть , чтобы использовать имя бина, которое Spring использовал при автоматической загрузке этого бина (это поведение по умолчанию).Мне пришлось заглянуть в org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors (), чтобы выяснить это имя.

0 голосов
/ 10 июня 2011

Почему бы не использовать атрибут unitName ваших аннотаций @PersistenceUnit / @PersistenceContext?Поскольку javaDoc для PersistenceAnnotationBeanPostProcessor говорит, что поддерживается ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...