স্প্রিং এওপি বসন্তের কাঠামোর একটি প্রয়োজনীয় অঙ্গ। খুব প্রাথমিক পর্যায়ে, বসন্তের কাঠামোটি আইওসি এবং এওপি-র উপর ভিত্তি করে। স্প্রিংয়ের সরকারী কোর্সে একটি স্লাইড রয়েছে যা এতে বলে:
এওপি কাঠামোর অন্যতম গুরুত্বপূর্ণ অঙ্গ।
স্প্রিং-এ এওপি কীভাবে কাজ করে তা বোঝার মূল বিষয়টি হ'ল আপনি যখন স্প্রিংয়ের সাথে একটি JDKDynamicProxy
দিকটি লেখেন তখন আমরা আপনার আইটেমগুলির জন্য একটি প্রক্সি তৈরির কাঠামো তৈরি করি, যদি আপনার শিম কোনও ইন্টারফেস প্রয়োগ করে বা সিজিএলআইবি এর মাধ্যমে যদি আপনার শিম কোনও বাস্তবায়ন না করে ইন্টারফেস. মনে রাখবেন যে আপনি যদি ক্লাস-পাথের সংস্করণ ৩.২ এর আগে স্প্রিং ব্যবহার করছেন তবে অবশ্যই আপনার ক্লাস-পাথে সিগ্লিব ২.২ থাকা উচিত। স্প্রিং ৩.২ থেকে শুরু করে এটি অকেজো কারণ সিগ্লিব ২.২ মূলটিতে অন্তর্ভুক্ত ছিল।
মটরশুটি তৈরির কাঠামোটি এমন একটি প্রক্সি তৈরি করবে যা আপনার অবজেক্টগুলিকে আবৃত করে এবং সুরক্ষা, লেনদেন পরিচালনা, লগিং ইত্যাদির মতো ক্রস কাটা উদ্বেগের দায়িত্ব যুক্ত করে।
এই উপায়ে প্রক্সি তৈরি একটি পয়েন্টকাট এক্সপ্রেশন থেকে শুরু করে প্রয়োগ করা হবে যা কোন মটরশুটি এবং পদ্ধতিগুলি প্রক্সি হিসাবে তৈরি করা হবে তা নির্ধারণের জন্য কাঠামোটি সরবরাহ করে। পরামর্শটি আপনার কোডের চেয়ে বেশি দায়িত্ব হবে। মনে রাখবেন যে এই প্রক্রিয়াতে পয়েন্টকুটটি কেবলমাত্র সর্বজনীন পদ্ধতিগুলিকে ক্যাপচার করে যা চূড়ান্ত হিসাবে ঘোষিত হয় না।
এখন, স্প্রিং এওপি-তে যখন কনটেইনার স্টার্ট-আপ এ কনটেন্টের দ্বারা দিকগুলি বুনন করা হবে, অ্যাসপেক্টজে আপনাকে বাইকোড পরিবর্তনের মাধ্যমে আপনার কোডের একটি পোস্ট সংকলন সহ এটি সম্পাদন করতে হবে। আমার মতে এই কারণে স্প্রিং পদ্ধতির অ্যাস্পেক্টজির চেয়ে সহজ এবং আরও পরিচালনাযোগ্য।
অন্যদিকে, স্প্রিং এওপি দিয়ে আপনি এওপির সমস্ত শক্তি ব্যবহার করতে পারবেন না কারণ বাস্তবায়নটি আপনার কোডটি সংশোধন করার মাধ্যমে নয়, প্রক্সিগুলির মাধ্যমে হয়।
AspectJ হিসাবে, আপনি স্প্রিংএওপি-তে লোড-টাইম বয়ন ব্যবহার করতে পারেন। আপনি বসন্তে এই বৈশিষ্ট্যটি থেকে উপকার পেতে পারেন কোনও এজেন্ট এবং বিশেষ কনফিগারেশন @EnabledLoadWeaving
বা এক্সএমএলে প্রয়োগ করা হয় । আপনি উদাহরণ হিসাবে নাম স্থানটি ব্যবহার করতে পারেন। তবে স্প্রিং এওপিতে আপনি সমস্ত ক্ষেত্রে বাধা দিতে পারবেন না। উদাহরণস্বরূপ, new
কমান্ডটি স্প্রিং এওপি সমর্থন করে না।
তবে স্প্রিং এওপিতে আপনি aspectof
বসন্তের কনফিগারেশন শিমটিতে কারখানা পদ্ধতিটি ব্যবহারের মাধ্যমে অ্যাসপেক্টজে ব্যবহার করে উপকৃত হতে পারেন ।
যে কারণে স্প্রিং এওপিটি মূলত ধারক থেকে তৈরি একটি প্রক্সি, তাই আপনি কেবল বসন্ত বিনের জন্য এওপি ব্যবহার করতে পারেন। AspectJ এর সাথে থাকা অবস্থায় আপনি আপনার সমস্ত মটরশুটিতে দিকটি ব্যবহার করতে পারেন। তুলনার আরেকটি বিষয় হ'ল ডিবাগ এবং কোড আচরণের পূর্বাভাস। স্প্রিং এওপি-র মাধ্যমে, জাভা সংকলক থেকে কাজটি সমস্তই প্রবর্তিত এবং দিকগুলি আপনার স্প্রিং শিমের জন্য প্রক্সি তৈরির জন্য খুব দুর্দান্ত উপায়। অ্যাসপেক্টজে আপনি কোডটি সংশোধন করেন, আপনার আরও সংকলন প্রয়োজন এবং আপনার দিকগুলি কোথায় বোনা হয়েছে তা বোঝা শক্ত হতে পারে। এমনকি বসন্তে বুনন বন্ধ করা সহজ: বসন্তের সাথে আপনি আপনার কনফিগারেশনটি থেকে দিকটি সরিয়ে ফেলেন, পুনরায় চালু করুন এবং এটি কাজ করে। AspectJ এ আপনাকে অবশ্যই কোডটি পুনরায় কম্পাইল করতে হবে!
লোড-টাইম বুননে, এস্পেক্টজে বসন্তের চেয়ে আরও নমনীয় কারণ স্প্রিং AspectJ- এর সমস্ত বিকল্পকে সমর্থন করে না। তবে আমার মতে আপনি যদি শিমের তৈরির প্রক্রিয়া পরিবর্তন করতে চান তবে একটি ভাল উপায় হ'ল একটি কারখানায় কাস্টম লগইন পরিচালনা করা এবং এমন কোনও দিকের লোড-টাইম বয়ন না দিয়ে যা আপনার নতুন অপারেটরের আচরণকে পরিবর্তন করে।
আমি আশা করি যে অ্যাস্পেক্টজে এবং স্প্রিং এওপি-র এই প্যানোরামিকটি আপনাকে দুটি পশনের পার্থক্য বুঝতে সহায়তা করে