DATAJDBC-622 - Support transactionManagerRef in @EnableJdbcRepositories.
Original pull request: #245.
This commit is contained in:
committed by
Jens Schauder
parent
f23b987642
commit
41c88bcd0c
@@ -27,6 +27,8 @@ import org.springframework.context.annotation.ComponentScan.Filter;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactoryBean;
|
||||
import org.springframework.data.repository.config.DefaultRepositoryBaseClass;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
/**
|
||||
* Annotation to enable JDBC repositories. Will scan the package of the annotated configuration class for Spring Data
|
||||
@@ -121,4 +123,10 @@ public @interface EnableJdbcRepositories {
|
||||
*/
|
||||
String dataAccessStrategyRef() default "";
|
||||
|
||||
/**
|
||||
* Configures the name of the {@link DataSourceTransactionManager} bean definition to be used to create repositories
|
||||
* discovered through this annotation. Defaults to {@code transactionManager}.
|
||||
*/
|
||||
String transactionManagerRef() default "transactionManager";
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.lang.annotation.Annotation;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactoryBean;
|
||||
@@ -37,6 +38,8 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
public class JdbcRepositoryConfigExtension extends RepositoryConfigurationExtensionSupport {
|
||||
|
||||
private static final String DEFAULT_TRANSACTION_MANAGER_BEAN_NAME = "transactionManager";
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.data.repository.config.RepositoryConfigurationExtension#getModuleName()
|
||||
@@ -78,6 +81,9 @@ public class JdbcRepositoryConfigExtension extends RepositoryConfigurationExtens
|
||||
source.getAttribute("dataAccessStrategyRef") //
|
||||
.filter(StringUtils::hasText) //
|
||||
.ifPresent(s -> builder.addPropertyReference("dataAccessStrategy", s));
|
||||
|
||||
Optional<String> transactionManagerRef = source.getAttribute("transactionManagerRef");
|
||||
builder.addPropertyValue("transactionManager", transactionManagerRef.orElse(DEFAULT_TRANSACTION_MANAGER_BEAN_NAME));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -134,6 +134,7 @@ public class EnableJdbcRepositoriesIntegrationTests {
|
||||
@EnableJdbcRepositories(considerNestedRepositories = true,
|
||||
includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = DummyRepository.class),
|
||||
jdbcOperationsRef = "qualifierJdbcOperations", dataAccessStrategyRef = "qualifierDataAccessStrategy",
|
||||
transactionManagerRef = "transactionManager",
|
||||
repositoryBaseClass = DummyRepositoryBaseClass.class)
|
||||
static class TestConfiguration {
|
||||
|
||||
|
||||
@@ -83,8 +83,8 @@ public class TestConfiguration {
|
||||
return new NamedParameterJdbcTemplate(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
PlatformTransactionManager transactionManager() {
|
||||
@Bean(name = "transactionManager")
|
||||
PlatformTransactionManager defaultTransactionManager() {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user