Sometimes there\'s a need to know the order of method interceptors that intercept a method call in Guice. A simple example scenario would be to use guice-persist provided @Trans
Guice invokes the interceptors in the order in which they were registered. So if you define them something like this:
bindInterceptor(any(), annotatedWith(Retry.class), retryInterceptor);
bindInterceptor(any(), annotatedWith(Transactional.class), transactionalInterceptor);
or
bindInterceptor(any(), annotatedWith(Retry.class), retryInterceptor, transactionalInterceptor);
the retryInterceptor
will be executed before the transactionalInterceptor
.
Same applies if you have multiple modules - the interceptors from first module are executed before the interceptors of the seconds module and so on.