স্প্রিং ফ্রেমওয়ার্কে, Interceptor একটি বিশেষ কম্পোনেন্ট যা HTTP অনুরোধ (request) এবং প্রতিক্রিয়া (response) প্রসেস করার সময় নির্দিষ্ট পয়েন্টে কাজ করে। এটি মূলত একটি ফিল্টারের মতো কাজ করে যা অনুরোধ এবং প্রতিক্রিয়ার মধ্যে কাস্টম লজিক যোগ করার সুযোগ দেয়।
স্প্রিং ওয়েব সার্ভিসেসে (Spring Web Services), Interceptor বিশেষভাবে SOAP এবং RESTful সেবা প্রসেসিংয়ে ব্যবহৃত হয়। এটি সাধারণত ব্যবহারকারীর অনুরোধ আসার আগে এবং প্রতিক্রিয়া পাঠানোর আগে/পর পরে কাজ করে।
Interceptor-এর কাজের ধাপসমূহ:
- Pre-Handle: অনুরোধ প্রসেসিং শুরু হওয়ার আগে কিছু লজিক প্রয়োগ করা।
- Post-Handle: কন্ট্রোলার বা সার্ভিস লেয়ার সফলভাবে কাজ শেষ করার পরে কিছু কাজ করা।
- After-Completion: সম্পূর্ণ প্রতিক্রিয়া পাঠানোর পরে ক্লিনআপ বা অন্যান্য কাজ।
Interceptor-এর প্রয়োজনীয়তা
- অনুরোধ যাচাইকরণ (Authentication and Authorization):
- Interceptor ব্যবহার করে আপনি প্রতিটি অনুরোধের জন্য নিরাপত্তা যাচাই করতে পারেন।
- উদাহরণস্বরূপ, টোকেন (JWT), API কী, অথবা কুকি যাচাই করতে Interceptor ব্যবহার করা হয়।
- লগিং এবং মনিটরিং:
- সিস্টেমের লোড এবং অনুরোধের বিবরণ লগ করার জন্য Interceptor ব্যবহার করা যায়।
- এটি ডিবাগিং এবং অডিটিং সহজ করে।
- কাস্টম হেডার যোগ করা বা পরিবর্তন করা:
- প্রতিটি অনুরোধ বা প্রতিক্রিয়ার জন্য হেডার কাস্টমাইজ করতে Interceptor খুব কার্যকর।
- ডেটা এনকোডিং/ডিকোডিং:
- SOAP বা REST মেসেজ এনকোড/ডিকোড করার জন্য Interceptor ব্যবহার করা হয়।
- ক্যাশিং (Caching):
- নির্দিষ্ট অনুরোধ বা প্রতিক্রিয়া ক্যাশে রাখার লজিক যোগ করতে Interceptor সহায়ক।
- প্রতিক্রিয়া রূপান্তর (Response Transformation):
- Interceptor ব্যবহার করে কন্ট্রোলার থেকে আসা ডেটা পরিবর্তন বা ফরম্যাট করা যায়।
স্প্রিং-এ Interceptor কনফিগার করা
স্প্রিং-এ Interceptor কনফিগার করতে আপনাকে HandlerInterceptor ইন্টারফেসটি বাস্তবায়ন করতে হবে অথবা WebMvcConfigurer ইন্টারফেসের মাধ্যমে Interceptor রেজিস্টার করতে হবে।
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("Pre Handle method is Called");
return true; // Return true to continue the request
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("Post Handle method is Called");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("After Completion method is Called");
}
}
এটি WebMvcConfigurer এর মাধ্যমে রেজিস্টার করতে:
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor());
}
}
উপসংহার
Spring Web Services-এ Interceptor একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি লাইটওয়েট এবং অ-flexible কাঠামোর মাধ্যমে HTTP অনুরোধ এবং প্রতিক্রিয়ার কাস্টম লজিক যুক্ত করার সুযোগ দেয়। নিরাপত্তা, লগিং, এবং ডেটা প্রসেসিং সহ বিভিন্ন কাজে এটি অপরিহার্য।
Read more