Spring / Spring Retry Interview Questions
What is the difference between include and exclude in @Retryable?
In older versions of Spring Retry, @Retryable had include and exclude attributes to specify which exception classes should or should not trigger a retry. In newer versions (Spring Retry 1.3+), these were renamed to retryFor and noRetryFor respectively for clarity, though the old names are still supported as aliases.
| Attribute | New Name | Effect |
|---|---|---|
| include | retryFor | Retry ONLY when this exception type is thrown |
| exclude | noRetryFor | Do NOT retry when this exception type is thrown |
Priority and interaction rules:
- If both
retryForandnoRetryForare specified, the exception must matchretryForAND not matchnoRetryForfor a retry to occur. - If neither is specified, all exceptions trigger a retry (defaulting to
Exception.class). - If only
noRetryForis specified, all exceptions except those listed are retried.
@Retryable( retryFor = { IOException.class }, noRetryFor = { FileNotFoundException.class } ) public void readFile(String path) { ... }
This retries IOException but not the subclass FileNotFoundException, which is useful when a missing file is a permanent error and retrying it is pointless.
More Related questions...