Improve transaction manager detection
Switch the condition used to trigger the creation of a transaction manager from the default name to the actual type. Fixes gh-3012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2014 the original author or authors.
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
* {@link DataSourceTransactionManager}.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass({ JdbcTemplate.class, PlatformTransactionManager.class })
|
||||
@@ -51,7 +52,7 @@ public class DataSourceTransactionManagerAutoConfiguration implements Ordered {
|
||||
private DataSource dataSource;
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(name = "transactionManager")
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnBean(DataSource.class)
|
||||
public PlatformTransactionManager transactionManager() {
|
||||
return new DataSourceTransactionManager(this.dataSource);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2014 the original author or authors.
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,17 +20,22 @@ import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link DataSourceTransactionManagerAutoConfiguration}.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class DataSourceTransactionManagerAutoConfigurationTests {
|
||||
|
||||
@@ -67,9 +72,32 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
|
||||
assertNotNull(this.context.getBean(DataSourceTransactionManager.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExistingTransactionManager() {
|
||||
this.context.register(SwitchTransactionsOn.class,
|
||||
TransactionManagerConfiguration.class,
|
||||
EmbeddedDataSourceConfiguration.class,
|
||||
DataSourceTransactionManagerAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertEquals("No transaction manager should be been created", 1,
|
||||
this.context.getBeansOfType(PlatformTransactionManager.class).size());
|
||||
assertEquals("Wrong transaction manager", this.context.getBean("myTransactionManager"),
|
||||
this.context.getBean(PlatformTransactionManager.class));
|
||||
}
|
||||
|
||||
@EnableTransactionManagement
|
||||
protected static class SwitchTransactionsOn {
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
protected static class TransactionManagerConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager myTransactionManager() {
|
||||
return mock(PlatformTransactionManager.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user