Remove synthetic attribute from SharedEntityManager.
AOT no longer needs this bean to be synthetic to work properly. And this attribute hampers BeanPostProcessors from being applied. See #2730 Original Pull Request: #2866
This commit is contained in:
committed by
Greg L. Turnquist
parent
572efd28a9
commit
f25c24fbef
@@ -217,7 +217,6 @@ public class JpaRepositoryConfigExtension extends RepositoryConfigurationExtensi
|
||||
|
||||
AbstractBeanDefinition entityManager = getEntityManagerBeanDefinitionFor(config, null);
|
||||
entityManager.setRole(BeanDefinition.ROLE_SUPPORT);
|
||||
entityManager.setSynthetic(true);
|
||||
entityManager.setPrimary(false);
|
||||
entityManager.setAutowireCandidate(false);
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
@@ -48,6 +49,7 @@ import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcesso
|
||||
* @author Oliver Gierke
|
||||
* @author Mark Paluch
|
||||
* @author Jens Schauder
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
@@ -147,6 +149,20 @@ class JpaRepositoryConfigExtensionUnitTests {
|
||||
.isEqualTo(JpaRepositoryConfigExtension.JpaRepositoryRegistrationAotProcessor.class);
|
||||
}
|
||||
|
||||
@Test // GH-2730
|
||||
void shouldNotRegisterEntityManagerAsSynthetic() {
|
||||
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
|
||||
RepositoryConfigurationExtension extension = new JpaRepositoryConfigExtension();
|
||||
extension.registerBeansForRoot(factory, configSource);
|
||||
|
||||
AbstractBeanDefinition bd = (AbstractBeanDefinition) factory.getBeanDefinition("jpaSharedEM_"
|
||||
+ configSource.getAttribute("entityManagerFactoryRef").orElse("entityManagerFactory"));
|
||||
|
||||
assertThat(bd.isSynthetic()).isEqualTo(false);
|
||||
}
|
||||
|
||||
private void assertOnlyOnePersistenceAnnotationBeanPostProcessorRegistered(DefaultListableBeanFactory factory,
|
||||
String expectedBeanName) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user