Weaving এবং Proxy এর ধারণা

AOP এর মূল ধারণা - স্প্রিং এওপি (Spring AOP) - Java Technologies

314

স্প্রিং এওপি (Spring AOP - Aspect-Oriented Programming) হল একটি প্রোগ্রামিং প্যারাডাইম যা মূলত অ্যাপ্লিকেশন কোডের আন্ডারলাইন ক্রস-কাটিং কনসার্ন (Cross-cutting Concerns) যেমন লগিং, সিকিউরিটি, ট্রানজেকশন ম্যানেজমেন্ট ইত্যাদি আলাদা করে পরিচালনা করতে সাহায্য করে। স্প্রিং এওপি ব্যবহারের মাধ্যমে, আপনি কোডের মৌলিক ব্যবসায়িক লজিক থেকে এসব ক্রস-কাটিং কনসার্নগুলো আলাদা রাখতে পারেন।

স্প্রিং এওপি (Spring AOP) এর মূল দুটি গুরুত্বপূর্ণ ধারণা হলো Weaving এবং Proxy। এই দুটি ধারণা স্প্রিং এওপির কাজের পদ্ধতি এবং কিভাবে এওপি কার্যকরীভাবে কাজ করে তা বোঝাতে সাহায্য করে।


Weaving এর ধারণা

Weaving হল সেই প্রক্রিয়া, যার মাধ্যমে একটি অ্যাসপেক্ট (Aspect) বাস্তবায়িত (woven) হয়ে থাকে একটি টার্গেট অবজেক্টের মধ্যে। এটি ঐ সমস্ত স্থানগুলিতে কোড ইনজেক্ট করতে ব্যবহৃত হয়, যেখানে Advice প্রয়োগ করা হবে। Weaving এর মাধ্যমে Advice (যেমন, @Before, @After, @Around) টার্গেট অবজেক্টের সাথে যুক্ত হয়।

Weaving তিনটি ধাপে করা যেতে পারে:

  1. Compile-Time Weaving: এই পর্যায়ে, অ্যাসপেক্টগুলির কোড কম্পাইল করার সময় টার্গেট কোডে সংযুক্ত করা হয়। এই ধরনের weaving সম্পূর্ণভাবে কম্পাইলিংয়ের সময় সম্পাদিত হয়।
  2. Load-Time Weaving: এই পর্যায়ে, টার্গেট কোড লোড হওয়ার সময় অ্যাসপেক্টগুলোর কোড প্রয়োগ করা হয়। এটি Java Agent বা স্প্রিং এওপি লোডার ব্যবহার করে করা হয়।
  3. Runtime Weaving: স্প্রিং AOP এ এটি সাধারণত ব্যবহৃত হয়। এই weaving Runtime এ প্রয়োগ করা হয়, যখন একটি বিহেভিওর বা অ্যাডভাইস মেথড চলতে থাকে। স্প্রিং AOP সাধারনত Runtime Weaving ব্যবহার করে, যেখানে AOP প্রোক্সি তৈরি করা হয় টার্গেট অবজেক্টের উপর।

Weaving এর মাধ্যমে, একটি অ্যাসপেক্টের Advice টার্গেট অবজেক্টের নির্দিষ্ট পয়েন্ট-কাট (Join Point) এ যুক্ত হয়ে যায় এবং অ্যাসপেক্টর কোড কার্যকর হয়।


Proxy এর ধারণা

Proxy স্প্রিং এওপির একটি গুরুত্বপূর্ণ উপাদান। এটি একটি ডাইনামিক অবজেক্ট যা মূল টার্গেট অবজেক্টের ফাংশনালিটি হস্তান্তর করে এবং অ্যাডভাইস প্রয়োগ করে। স্প্রিং AOP সাধারনত Proxy Pattern ব্যবহার করে, যেখানে একটি Proxy Object মূল টার্গেট অবজেক্টের ফাংশনালিটি গ্রহণ করে এবং তার মধ্যে অ্যাসপেক্টের কাজ সন্নিবেশিত করে।

Proxy এর দুটি ধরনের হতে পারে:

  1. JDK Dynamic Proxy:
    • এই প্রোক্সি মেথড সিগনেচার (Method Signature) ইন্টারফেসের মাধ্যমে তৈরি হয়।
    • এটি শুধুমাত্র ইন্টারফেস ভিত্তিক প্রোক্সি তৈরি করতে সক্ষম।
    • যখন টার্গেট অবজেক্ট ইন্টারফেসের মাধ্যমে কাজ করে, তখন JDK Dynamic Proxy ব্যবহার করা হয়।
  2. CGLIB Proxy (Code Generation Library):
    • এই প্রোক্সি টার্গেট অবজেক্টের ক্লাস থেকে সেল্ফ-জেনারেটেড সাব-ক্লাস তৈরি করে।
    • এটি ক্লাস ভিত্তিক প্রোক্সি তৈরি করতে সক্ষম, তবে এটি ইন্টারফেস নির্ভর নয়।
    • যদি টার্গেট অবজেক্টের কোনো ইন্টারফেস না থাকে, তাহলে CGLIB Proxy ব্যবহার করা হয়।

Proxy তৈরি করার কাজ:

  • Method Invocation: স্প্রিং AOP প্রোক্সি অবজেক্ট টার্গেট মেথডের কল ইন্টারসেপ্ট করে এবং অ্যাসপেক্টের Advice প্রয়োগ করে, তারপর মূল মেথড কল করা হয়।
  • Advice Handling: প্রোক্সি অবজেক্টের মাধ্যমে কার্যকরী Advice যেমন @Before, @After, @Around প্রভাবিত হয়।

উদাহরণ:

ধরা যাক, আপনার একটি EmployeeService ক্লাস আছে, যার মধ্যে কিছু ব্যাবসায়িক লজিক আছে। স্প্রিং এওপি ব্যবহার করে আপনি লগিং অ্যাসপেক্ট তৈরি করতে পারেন যা সমস্ত মেথড কলের আগে অথবা পরে লগ মেসেজ লিখবে।

public class EmployeeService {
    public void addEmployee() {
        System.out.println("Adding employee...");
    }
    
    public void deleteEmployee() {
        System.out.println("Deleting employee...");
    }
}

এখন, একটি অ্যাসপেক্ট তৈরি করা যাক যা addEmployee() এবং deleteEmployee() মেথডের আগে লগিং করবে:

@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* EmployeeService.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("Logging before method: " + joinPoint.getSignature().getName());
    }
}

এখানে, LoggingAspect একটি Before advice যা EmployeeService এর সমস্ত মেথডের আগে লগিং করবে।

স্প্রিং AOP এই অ্যাডভাইসকে একটি Proxy অবজেক্টে প্রয়োগ করে, ফলে EmployeeService এর সমস্ত মেথডের আগে লগিং হয়ে যাবে। এটি JDK Dynamic Proxy অথবা CGLIB Proxy এর মাধ্যমে সম্ভব।


Weaving এবং Proxy এর সম্পর্ক

  • Weaving প্রক্রিয়াটি অ্যাসপেক্টগুলোর Advice টার্গেট অবজেক্টে যুক্ত করার কাজ করে।
  • Proxy অ্যাসপেক্ট এবং টার্গেট অবজেক্টের মধ্যস্থতা হিসেবে কাজ করে, যেখানে Advice কার্যকর হওয়ার পর মূল মেথড এক্সিকিউট হয়।
  • Weaving এর মাধ্যমে টার্গেট কোডে অ্যাডভাইস যুক্ত করা হয়, এবং Proxy এই অ্যাডভাইসগুলো কার্যকর করে।

স্প্রিং AOP তে, Weaving এবং Proxy একে অপরের সাথে কাজ করে, যেখানে Proxy টার্গেট অবজেক্টের মধ্যে Advice প্রয়োগ করে।


উপসংহার

স্প্রিং AOP এ Weaving এবং Proxy দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা। Weaving হল সেই প্রক্রিয়া যা অ্যাসপেক্টের Advice কে টার্গেট অবজেক্টের মধ্যে ইনজেক্ট করে এবং Proxy হল সেই অবজেক্ট যা টার্গেট মেথডের কল ইন্টারসেপ্ট করে এবং অ্যাডভাইসের মাধ্যমে কার্যকর করে। এই দুটি ধারণা স্প্রিং AOP এর মাধ্যমে ক্রস-কাটিং কনসার্ন যেমন লগিং, সিকিউরিটি, ট্রানজেকশন ম্যানেজমেন্ট ইত্যাদি অ্যাসপেক্টের কার্যকরী প্রয়োগে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...