EntityManagerBeanDefinitionRegistrarPostProcessor sets primary flag on EntityManager bean definitions.
Closes #2288.
This commit is contained in:
committed by
Greg L. Turnquist
parent
648bd74be5
commit
93705f1a9e
@@ -43,6 +43,7 @@ import org.springframework.orm.jpa.SharedEntityManagerCreator;
|
||||
* {@link EntityManagerFactory} instances.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Réda Housni Alaoui
|
||||
*/
|
||||
public class EntityManagerBeanDefinitionRegistrarPostProcessor implements BeanFactoryPostProcessor, Ordered {
|
||||
|
||||
@@ -85,6 +86,7 @@ public class EntityManagerBeanDefinitionRegistrarPostProcessor implements BeanFa
|
||||
|
||||
AbstractBeanDefinition emBeanDefinition = builder.getRawBeanDefinition();
|
||||
|
||||
emBeanDefinition.setPrimary(definition.getBeanDefinition().isPrimary());
|
||||
emBeanDefinition.addQualifier(new AutowireCandidateQualifier(Qualifier.class, definition.getBeanName()));
|
||||
emBeanDefinition.setScope(definition.getBeanDefinition().getScope());
|
||||
emBeanDefinition.setSource(definition.getBeanDefinition().getSource());
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.ComponentScan.Filter;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.ImportResource;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.orm.jpa.JpaVendorAdapter;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -46,6 +47,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Jens Schauder
|
||||
* @author Réda Housni Alaoui
|
||||
*/
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration
|
||||
@@ -57,7 +59,8 @@ public class EntityManagerBeanDefinitionRegistrarPostProcessorIntegrationTests {
|
||||
void injectsEntityManagerIntoConstructors() {
|
||||
|
||||
assertThat(target).isNotNull();
|
||||
assertThat(target.em).isNotNull();
|
||||
assertThat(target.firstEm).isNotNull();
|
||||
assertThat(target.primaryEm).isNotNull();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,16 +107,24 @@ public class EntityManagerBeanDefinitionRegistrarPostProcessorIntegrationTests {
|
||||
LocalContainerEntityManagerFactoryBean secondEmf() {
|
||||
return emf();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
LocalContainerEntityManagerFactoryBean thirdEmf() {
|
||||
return emf();
|
||||
}
|
||||
}
|
||||
|
||||
@TestComponent
|
||||
static class EntityManagerInjectionTarget {
|
||||
|
||||
private final EntityManager em;
|
||||
private final EntityManager firstEm;
|
||||
private final EntityManager primaryEm;
|
||||
|
||||
@Autowired
|
||||
public EntityManagerInjectionTarget(@Qualifier("firstEmf") EntityManager em) {
|
||||
this.em = em;
|
||||
public EntityManagerInjectionTarget(@Qualifier("firstEmf") EntityManager firstEm, EntityManager primaryEm) {
|
||||
this.firstEm = firstEm;
|
||||
this.primaryEm = primaryEm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user