Polish "Add BatchTransactionManager annotation"

See gh-39473
This commit is contained in:
Scott Frederick 2024-02-13 15:37:32 -06:00
parent bb87faf237
commit 22952c3057
3 changed files with 31 additions and 9 deletions

View File

@ -27,10 +27,9 @@ import org.springframework.context.annotation.Primary;
import org.springframework.transaction.PlatformTransactionManager;
/**
* Qualifier annotation for a {@link PlatformTransactionManager
* PlatformTransactionManager} to be injected into Batch auto-configuration. Can be used
* on a secondary {@link PlatformTransactionManager PlatformTransactionManager}, if there
* is another one marked as {@link Primary @Primary}.
* Qualifier annotation for a {@link PlatformTransactionManager} to be injected into Batch
* auto-configuration. Can be used on a secondary {@link PlatformTransactionManager}, if
* there is another one marked as {@link Primary @Primary}.
*
* @author Lasse Wulff
* @since 3.3.0

View File

@ -80,13 +80,16 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.core.convert.support.ConfigurableConversionService;
import org.springframework.integration.transaction.PseudoTransactionManager;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.init.DatabasePopulator;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.support.AbstractPlatformTransactionManager;
import org.springframework.transaction.support.DefaultTransactionStatus;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@ -544,13 +547,34 @@ class BatchAutoConfigurationTests {
@Bean
@Primary
public PlatformTransactionManager normalTransactionManager() {
return new PseudoTransactionManager();
return new TestTransactionManager();
}
@BatchTransactionManager
@Bean
public PlatformTransactionManager batchTransactionManager() {
return new PseudoTransactionManager();
return new TestTransactionManager();
}
}
static class TestTransactionManager extends AbstractPlatformTransactionManager {
@Override
protected Object doGetTransaction() throws TransactionException {
return null;
}
@Override
protected void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException {
}
@Override
protected void doCommit(DefaultTransactionStatus status) throws TransactionException {
}
@Override
protected void doRollback(DefaultTransactionStatus status) throws TransactionException {
}
}

View File

@ -21,8 +21,7 @@ For more info about Spring Batch, see the {spring-batch}[Spring Batch project pa
[[howto.batch.specifying-a-transaction-manager]]
=== Specifying a Batch Transaction Manager
Similar to <<howto.batch.specifying-a-data-source>> you can also define a `PlatformTransactionManager`
for use in the batch processing by marking it as `@BatchTransactionManager`.
Similar to <<howto.batch.specifying-a-data-source>>, you can define a `PlatformTransactionManager` for use in the batch processing by marking it as `@BatchTransactionManager`.
If you do so and want two transaction managers, remember to mark the other one as `@Primary`.