Skip to content

Commit de7942b

Browse files
committed
Support transactionManagerRef in @EnableJdbcRepositories
JPA has support for this option, this is very helpful when dealing with multiple datasources.o Ticket: https://jira.spring.io/browse/DATAJDBC-321
1 parent 378736c commit de7942b

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed

spring-data-jdbc/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@
207207
<scope>test</scope>
208208
</dependency>
209209

210+
<dependency>
211+
<groupId>javax.annotation</groupId>
212+
<artifactId>javax.annotation-api</artifactId>
213+
<version>1.3.2</version>
214+
</dependency>
210215

211216
<dependency>
212217
<groupId>de.schauderhaft.degraph</groupId>

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositories.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.springframework.context.annotation.Import;
2828
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactoryBean;
2929
import org.springframework.data.repository.config.DefaultRepositoryBaseClass;
30+
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
31+
import org.springframework.transaction.PlatformTransactionManager;
3032

3133
/**
3234
* Annotation to enable JDBC repositories. Will scan the package of the annotated configuration class for Spring Data
@@ -121,4 +123,10 @@
121123
*/
122124
String dataAccessStrategyRef() default "";
123125

126+
/**
127+
* Configures the name of the {@link DataSourceTransactionManager} bean definition to be used to create repositories
128+
* discovered through this annotation. Defaults to {@code transactionManager}.
129+
*/
130+
String transactionManagerRef() default "transactionManager";
131+
124132
}

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcRepositoryConfigExtension.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Collection;
2020
import java.util.Collections;
2121
import java.util.Locale;
22+
import java.util.Optional;
2223

2324
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2425
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactoryBean;
@@ -37,6 +38,8 @@
3738
*/
3839
public class JdbcRepositoryConfigExtension extends RepositoryConfigurationExtensionSupport {
3940

41+
private static final String DEFAULT_TRANSACTION_MANAGER_BEAN_NAME = "transactionManager";
42+
4043
/*
4144
* (non-Javadoc)
4245
* @see org.springframework.data.repository.config.RepositoryConfigurationExtension#getModuleName()
@@ -78,6 +81,9 @@ public void postProcess(BeanDefinitionBuilder builder, RepositoryConfigurationSo
7881
source.getAttribute("dataAccessStrategyRef") //
7982
.filter(StringUtils::hasText) //
8083
.ifPresent(s -> builder.addPropertyReference("dataAccessStrategy", s));
84+
85+
Optional<String> transactionManagerRef = source.getAttribute("transactionManagerRef");
86+
builder.addPropertyValue("transactionManager", transactionManagerRef.orElse(DEFAULT_TRANSACTION_MANAGER_BEAN_NAME));
8187
}
8288

8389
/**

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositoriesIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ static class DummyEntity {
133133
@EnableJdbcRepositories(considerNestedRepositories = true,
134134
includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = DummyRepository.class),
135135
jdbcOperationsRef = "qualifierJdbcOperations", dataAccessStrategyRef = "qualifierDataAccessStrategy",
136+
transactionManagerRef = "transactionManager",
136137
repositoryBaseClass = DummyRepositoryBaseClass.class)
137138
static class TestConfiguration {
138139

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/TestConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ NamedParameterJdbcOperations namedParameterJdbcTemplate() {
8181
return new NamedParameterJdbcTemplate(dataSource);
8282
}
8383

84-
@Bean
85-
PlatformTransactionManager transactionManager() {
84+
@Bean(name = "transactionManager")
85+
PlatformTransactionManager defaultTransactionManager() {
8686
return new DataSourceTransactionManager(dataSource);
8787
}
8888

0 commit comments

Comments
 (0)