Ta reguła oznacza kod Java, który używa przestarzałych wyjątków związanych z blokowaniem Spring CannotSerializeTransactionException oraz DeadlockLoserDataAccessException.
Od wersji Spring Framework 6.0.3 wyjątki te zostały wycofane ze względu na niespójną semantykę sterowników JDBC. Deweloperom zaleca się korzystanie z CannotAcquireLockException która oferuje ujednolicony, spójny z frameworkiem sposób obsługi pesymistycznego blokowania i awarii izolacji transakcji.
Poniższy przykład pokazuje nieprawidłowe użycie, które zostanie oflagowane:
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");
}
}
Poniższy przykład pokazuje prawidłowe zmigrowane użycie:
import org.springframework.dao.CannotAcquireLockException;
public class ValidLockingUsage {
public void method() {
throw new CannotAcquireLockException("Simulated issue");
}
}
Więcej informacji na ten temat zawierają następujące zasoby: