Spring / Spring Retry Interview Questions
What is the use of the recover attribute in @Retryable?
The recover attribute in @Retryable allows you to explicitly name the recovery method that should be invoked when all retry attempts are exhausted. Without this attribute, Spring Retry uses automatic method matching — it looks for a @Recover method in the same bean whose return type and exception parameter type match the failed retryable method.
The automatic matching works in most cases, but can be ambiguous when:
- Multiple
@Recovermethods exist with the same return type - You want a specific recovery method for a specific
@Retryablemethod without sharing recovery logic
Using the recover attribute to be explicit:
@Retryable( retryFor = IOException.class, maxAttempts = 3, recover = "recoverFromIOError" ) public String fetchDocument(String id) throws IOException { return documentService.get(id); } @Recover public String recoverFromIOError(IOException ex, String id) { return "Document " + id + " unavailable"; } @Recover public String recoverFromGenericError(Exception ex, String id) { return "Generic fallback for " + id; }
By naming recover = recoverFromIOError"
you ensure that fetchDocument always routes to the correct recovery method
More Related questions...