Configuration Class
This is a Java class annotated with @Configuration for auto-configuration that is, it indicates this class contains configuration for the spring application context. Basically, it indicates that this class will contain some beans that must be registered with the application context to be used in the application.
- We created a configuration class, and annotated it with @Configuration, basically indicating that this class is for configuring the spring application context
- This class implements an interface – ‘WebMvcConfigurer‘ which allows us to customize spring MVC configuration specific to our own needs, overriding its default behavior.
- @Override the method – addInterceptors(InterceptorRegistry registry): This tells the InterceptorRegistry to register the provided class as the Interceptor. In our case it – is ‘RequestInterceptor’.
In summary, the whole point of creating a configured class is to register custom interceptors with the ‘InterceptorRegistry‘.
Java
package com.w3wiki.requestinterceptorexample.config; import com.w3wiki.requestinterceptorexample.RequestInterceptor.RequestInterceptor; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class RequestInterceptorConfig implements WebMvcConfigurer { // Register an interceptor with the registry, Interceptor name : RequestInterceptor @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor( new RequestInterceptor()); } //* We can register any number of interceptors with our spring application context } |
Spring Boot – Interceptor
Spring Boot Interceptor is an additional component that will intercept every request and response dispatch and perform some operations on it.
Interceptors in web applications play a major in performing initial or finalization work.
Interceptors have one primary purpose – “To intercept an incoming or outgoing request”.
This intercepting behavior is done to perform some operation BEFORE or AFTER an action invocation. You can think of an interceptor as a mediator between the request and the business logic reserved for that request. Interceptor in Spring Boot can be implemented either by extending the HandlerInterceptorAdapter class or by implementing HandlerInterceptor Interface.
Interceptors are useful for many purposes some of which are listed below :
1. Logging
Logging is a common practice to understand the flow of code & debugging. Interceptors are widely for the same, Documenting or recording the requests made by the client or the responses sent back to them is generally useful in debugging and monitoring purposes.
2. Authentication
Authentication is a security mechanism that can be implemented inside an Interceptor before the request even reaches its appropriate controller. It can be intercepted by the Interceptor & authentication can be verified, if denied then the request doesn’t get delegated to the controller which not only minimizes the code but reduces a great overhead.
3. Request/Response Modification
Interceptors are also used for modifying requests & responses. It can be done in the following ways :
- Adding or modifying request parameters
- Modifying request headers, or response head
- Change status code
- Redirection to a different URL
- Handle custom error requests/responses which frees the controller or an addition of an external component just to handle the exceptions.
Contact Us