CannotSerializeTransactionException и DeadlockLoserDataAccessException устарели по сравнению с Spring 6.0.3

Это правило помечает Java код, который использует Spring 'устаревшие исключения, связанные с блокировкой CannotSerializeTransactionException и DeadlockLoserDataAccessException.

Начиная с Spring Framework 6.0.3, эти исключения были отменены из-за несогласованности семантики в драйверах JDBC. Разработчикам рекомендуется использовать CannotAcquireLockException вместо этого, который предлагает единый, согласованный с фреймворком способ обработки пессимистической блокировки и сбоев изоляции транзакций.

В следующем примере показано недопустимое использование, которое будет отмечено:


import org.springframework.dao.CannotSerializeTransactionException;
import org.springframework.dao.DeadlockLoserDataAccessException;
public class InvalidLockingUsage {
    public void simulateCannotSerialize() {
    	throw new CannotSerializeTransactionException("Simulated serialization failure");
    }
    public void simulateDeadlock() {
    	throw new DeadlockLoserDataAccessException("Simulated deadlock");
    }
}

В следующем примере показано правильное использование миграции:


import org.springframework.dao.CannotAcquireLockException;
public class ValidLockingUsage {
    public void method() {
    	throw new CannotAcquireLockException("Simulated issue");
    }
}

Дополнительная информация: