Package org.springframework.core.task

# Interface TaskDecorator

All Known Implementing Classes:
  `CompositeTaskDecorator`, `ContextPropagatingTaskDecorator`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface TaskDecorator
A callback interface for a decorator to be applied to any `Runnable` about to be executed.

Note that such a decorator is not necessarily being applied to the user-supplied `Runnable`/`Callable` but rather to the actual execution callback (which may be a wrapper around the user-supplied task).

The primary use case is to set some execution context around the task's invocation, or to provide some monitoring/statistics for task execution.

NOTE: Exception handling in `TaskDecorator` implementations may be limited. Specifically in case of a `Future`-based operation, the exposed `Runnable` will be a wrapper which does not propagate any exceptions from its `run` method.

Since:
  4.3
Author:
  Juergen Hoeller
See Also:
  - `TaskExecutor.execute(Runnable)`
  - `SimpleAsyncTaskExecutor.setTaskDecorator(org.springframework.core.task.TaskDecorator)`
  - `TaskExecutorAdapter.setTaskDecorator(org.springframework.core.task.TaskDecorator)`

## Method Summary

Modifier and Type
Method
Description
`Runnable`
`decorate(Runnable runnable)`
Decorate the given `Runnable`, returning a potentially wrapped `Runnable` for actual execution, internally delegating to the original `Runnable.run()` implementation.

## Method Details

### decorate

Runnable decorate(Runnable runnable)
Decorate the given `Runnable`, returning a potentially wrapped `Runnable` for actual execution, internally delegating to the original `Runnable.run()` implementation.

Parameters:
  `runnable` - the original `Runnable`
Returns:
  the decorated `Runnable`