Class Interceptor.Priority

java.lang.Object
jakarta.interceptor.Interceptor.Priority
Enclosing class:
Interceptor

public static class Interceptor.Priority extends Object

Priorities that define the order in which interceptors are invoked. These values are intended to be used with the Priority annotation for interceptors that are defined by means of interceptor binding.

Interceptors with smaller priority values are called first. If more than one interceptor has the same priority, the relative order of those interceptors is undefined.

  • Interceptors defined by platform specifications that are to be executed at the beginning of the interceptor chain should have priority values in the range PLATFORM_BEFORE up until LIBRARY_BEFORE.
  • Interceptors defined by extension libraries that are intended to be executed earlier in the interceptor chain, but after any interceptors in the range up until LIBRARY_BEFORE should have priority values in the range LIBRARY_BEFORE up until APPLICATION.
  • Interceptors defined by applications should have priority values in the range APPLICATION up until LIBRARY_AFTER.
  • Interceptors defined by extension libraries that are intended to be executed later in the interceptor chain should have priority values in the range LIBRARY_AFTER up until PLATFORM_AFTER.
  • Interceptors defined by platform specifications that are intended to be executed at the end of the interceptor chain should have priority values at PLATFORM_AFTER or higher.

An interceptor that must be invoked before or after another defined interceptor can choose any appropriate value.

For example, an extension library might define an interceptor like this:

 @Priority(Interceptor.Priority.LIBRARY_BEFORE+10)
 @Validated @Interceptor
 public class ValidationInterceptor { ... }
 
The Priority annotation is ignored when computing the invocation order of interceptors bound to a target using the Interceptors annotation.
Since:
Jakarta Interceptors 1.2
See Also: