Skip to content

Commit f25c24f

Browse files
quaffgregturn
authored andcommitted
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
1 parent 572efd2 commit f25c24f

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtension.java

-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ private String registerSharedEntityMangerIfNotAlreadyRegistered(BeanDefinitionRe
217217

218218
AbstractBeanDefinition entityManager = getEntityManagerBeanDefinitionFor(config, null);
219219
entityManager.setRole(BeanDefinition.ROLE_SUPPORT);
220-
entityManager.setSynthetic(true);
221220
entityManager.setPrimary(false);
222221
entityManager.setAutowireCandidate(false);
223222

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtensionUnitTests.java

+16
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.mockito.junit.jupiter.MockitoSettings;
3232
import org.mockito.quality.Strictness;
3333
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
34+
import org.springframework.beans.factory.support.AbstractBeanDefinition;
3435
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
3536
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
3637
import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -48,6 +49,7 @@
4849
* @author Oliver Gierke
4950
* @author Mark Paluch
5051
* @author Jens Schauder
52+
* @author Yanming Zhou
5153
*/
5254
@ExtendWith(MockitoExtension.class)
5355
@MockitoSettings(strictness = Strictness.LENIENT)
@@ -147,6 +149,20 @@ void exposesJpaAotProcessor() {
147149
.isEqualTo(JpaRepositoryConfigExtension.JpaRepositoryRegistrationAotProcessor.class);
148150
}
149151

152+
@Test // GH-2730
153+
void shouldNotRegisterEntityManagerAsSynthetic() {
154+
155+
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
156+
157+
RepositoryConfigurationExtension extension = new JpaRepositoryConfigExtension();
158+
extension.registerBeansForRoot(factory, configSource);
159+
160+
AbstractBeanDefinition bd = (AbstractBeanDefinition) factory.getBeanDefinition("jpaSharedEM_"
161+
+ configSource.getAttribute("entityManagerFactoryRef").orElse("entityManagerFactory"));
162+
163+
assertThat(bd.isSynthetic()).isEqualTo(false);
164+
}
165+
150166
private void assertOnlyOnePersistenceAnnotationBeanPostProcessorRegistered(DefaultListableBeanFactory factory,
151167
String expectedBeanName) {
152168

0 commit comments

Comments
 (0)