Deprecate TransactionCallbackWithoutResult

Closes gh-35606
This commit is contained in:
Juergen Hoeller
2025-10-11 13:25:40 +02:00
parent 8b36736344
commit 080bca0b23
3 changed files with 20 additions and 41 deletions
@@ -33,7 +33,6 @@ import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.UnexpectedRollbackException; import org.springframework.transaction.UnexpectedRollbackException;
import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
@@ -120,15 +119,11 @@ class JmsTransactionManagerTests {
return null; return null;
}); });
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() { tt.execute(status ->
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
jt.execute((SessionCallback<Void>) sess -> { jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess); assertThat(session).isSameAs(sess);
return null; return null;
}); }));
}
});
tm.commit(ts); tm.commit(ts);
verify(session).commit(); verify(session).commit();
@@ -153,15 +148,12 @@ class JmsTransactionManagerTests {
return null; return null;
}); });
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override jt.execute((SessionCallback<Void>) sess -> {
protected void doInTransactionWithoutResult(TransactionStatus status) { assertThat(session).isSameAs(sess);
jt.execute((SessionCallback<Void>) sess -> { return null;
assertThat(session).isSameAs(sess); });
return null; status.setRollbackOnly();
});
status.setRollbackOnly();
}
}); });
assertThatExceptionOfType(UnexpectedRollbackException.class).isThrownBy(() -> assertThatExceptionOfType(UnexpectedRollbackException.class).isThrownBy(() ->
tm.commit(ts)); tm.commit(ts));
@@ -191,15 +183,11 @@ class JmsTransactionManagerTests {
}); });
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
tt.execute(new TransactionCallbackWithoutResult() { tt.execute(status ->
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
jt.execute((SessionCallback<Void>) sess -> { jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isNotSameAs(sess); assertThat(session).isNotSameAs(sess);
return null; return null;
}); }));
}
});
jt.execute((SessionCallback<Void>) sess -> { jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess); assertThat(session).isSameAs(sess);
return null; return null;
@@ -231,15 +219,11 @@ class JmsTransactionManagerTests {
}); });
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
tt.execute(new TransactionCallbackWithoutResult() { tt.execute(status ->
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
jt.execute((SessionCallback<Void>) sess -> { jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isNotSameAs(sess); assertThat(session).isNotSameAs(sess);
return null; return null;
}); }));
}
});
jt.execute((SessionCallback<Void>) sess -> { jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess); assertThat(session).isSameAs(sess);
return null; return null;
@@ -28,9 +28,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.transaction.InvalidIsolationLevelException; import org.springframework.transaction.InvalidIsolationLevelException;
import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.TransactionSystemException; import org.springframework.transaction.TransactionSystemException;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
@@ -583,11 +581,7 @@ class JpaTransactionManagerTests {
tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE);
assertThatExceptionOfType(InvalidIsolationLevelException.class).isThrownBy(() -> assertThatExceptionOfType(InvalidIsolationLevelException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {}));
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
}
}));
verify(manager).close(); verify(manager).close();
} }
@@ -597,12 +591,9 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
public void doInTransactionWithoutResult(TransactionStatus status) { status.flush();
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
status.flush();
}
}); });
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
@@ -16,6 +16,8 @@
package org.springframework.transaction.support; package org.springframework.transaction.support;
import java.util.function.Consumer;
import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable;
import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.TransactionStatus;
@@ -28,7 +30,9 @@ import org.springframework.transaction.TransactionStatus;
* @author Juergen Hoeller * @author Juergen Hoeller
* @since 28.03.2003 * @since 28.03.2003
* @see TransactionTemplate * @see TransactionTemplate
* @deprecated as of 7.0, superseded by {@link TransactionOperations#executeWithoutResult(Consumer)}
*/ */
@Deprecated(since = "7.0")
public abstract class TransactionCallbackWithoutResult implements TransactionCallback<@Nullable Object> { public abstract class TransactionCallbackWithoutResult implements TransactionCallback<@Nullable Object> {
@Override @Override