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.UnexpectedRollbackException;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
@@ -120,15 +119,11 @@ class JmsTransactionManagerTests {
return null;
});
TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
tt.execute(status ->
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess);
return null;
});
}
});
}));
tm.commit(ts);
verify(session).commit();
@@ -153,15 +148,12 @@ class JmsTransactionManagerTests {
return null;
});
TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess);
return null;
});
status.setRollbackOnly();
}
tt.executeWithoutResult(status -> {
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess);
return null;
});
status.setRollbackOnly();
});
assertThatExceptionOfType(UnexpectedRollbackException.class).isThrownBy(() ->
tm.commit(ts));
@@ -191,15 +183,11 @@ class JmsTransactionManagerTests {
});
TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
tt.execute(status ->
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isNotSameAs(sess);
return null;
});
}
});
}));
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess);
return null;
@@ -231,15 +219,11 @@ class JmsTransactionManagerTests {
});
TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
tt.execute(status ->
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isNotSameAs(sess);
return null;
});
}
});
}));
jt.execute((SessionCallback<Void>) sess -> {
assertThat(session).isSameAs(sess);
return null;
@@ -28,9 +28,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.transaction.InvalidIsolationLevelException;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.TransactionSystemException;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
@@ -583,11 +581,7 @@ class JpaTransactionManagerTests {
tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE);
assertThatExceptionOfType(InvalidIsolationLevelException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
}
}));
tt.executeWithoutResult(status -> {}));
verify(manager).close();
}
@@ -597,12 +591,9 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
status.flush();
}
tt.executeWithoutResult(status -> {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
status.flush();
});
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
@@ -16,6 +16,8 @@
package org.springframework.transaction.support;
import java.util.function.Consumer;
import org.jspecify.annotations.Nullable;
import org.springframework.transaction.TransactionStatus;
@@ -28,7 +30,9 @@ import org.springframework.transaction.TransactionStatus;
* @author Juergen Hoeller
* @since 28.03.2003
* @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> {
@Override