কেন আমরা স্প্রিং শিমের স্ট্যাটিক দৃষ্টান্তের পরিবর্তনশীলটিকে স্বায়িত করতে পারি না। আমি জানি এটি অর্জনের আরও একটি উপায় আছে তবে কেবল আমরা কেন নীচের উপায়ে এটি করতে পারি তা জানতে চাই।
যেমন
@Autowired
public static Test test;
কেন আমরা স্প্রিং শিমের স্ট্যাটিক দৃষ্টান্তের পরিবর্তনশীলটিকে স্বায়িত করতে পারি না। আমি জানি এটি অর্জনের আরও একটি উপায় আছে তবে কেবল আমরা কেন নীচের উপায়ে এটি করতে পারি তা জানতে চাই।
যেমন
@Autowired
public static Test test;
উত্তর:
কারণ স্থির ক্ষেত্র ব্যবহার স্থির পদ্ধতি ব্যবহারে উত্সাহ দেয়। এবং স্থির পদ্ধতিগুলি খারাপ are নির্ভরতা ইনজেকশনটির মূল উদ্দেশ্য হ'ল কনটেইনারটি আপনার জন্য বস্তু তৈরি করতে এবং সেগুলিকে তারযুক্ত করতে দেয়। এছাড়াও এটি পরীক্ষা সহজতর করে তোলে।
আপনি একবার স্থিতিশীল পদ্ধতি ব্যবহার শুরু করার পরে, আপনাকে আর কোনও অবজেক্টের উদাহরণ তৈরি করতে হবে না এবং পরীক্ষা করা আরও শক্ত। এছাড়াও আপনি প্রদত্ত শ্রেণীর একাধিক উদাহরণ তৈরি করতে পারবেন না, প্রতিটি আলাদা আলাদা নির্ভরতার সাথে ইনজেকশন দেওয়া হচ্ছে (কারণ ক্ষেত্রটি সুস্পষ্টভাবে ভাগ করে নেওয়া এবং বিশ্বব্যাপী রাষ্ট্র তৈরি করে - এটিও মন্দ)।
@BeforeClass
একটি স্প্রিংজেইউনিট 4 ক্লাসরুনার ব্যবহার করতে চান এবং সেই পদ্ধতিতে @Autowired
পরীক্ষায় মটরশুটি অ্যাক্সেস করতে চান .. আপনি মূলত পারেন না। যা বিরক্তিকর।
কারণ যখন শ্রেণি লোডার স্থির মানগুলি লোড করে, তখন স্প্রিং প্রসঙ্গটি এখনও অগত্যা লোড হয় না। সুতরাং শ্রেণি লোডার শিমের স্ট্যাটিক ক্ষেত্রগুলি সঠিকভাবে ইনজেক্ট করবে না এবং ব্যর্থ হবে।
ওওপি ধারণা অনুসারে, স্ট্যাটিক ভেরিয়েবলগুলি স্বতঃশক্ত হয়ে থাকলে এটি খারাপ ডিজাইন হবে।
স্ট্যাটিক ভেরিয়েবল অবজেক্টের সম্পত্তি নয়, তবে এটি কোনও শ্রেণীর সম্পত্তি। স্প্রিং অটো তারের বস্তুগুলিতে করা হয়, এবং এটি আমার মতে নকশাটি পরিষ্কার করে তোলে। আপনি স্বতঃযুক্ত ওয়্যার বিন বিনকে সিঙ্গলটন হিসাবে স্থাপন করতে পারেন এবং স্থির হিসাবে এটি নির্ধারণের মতো অর্জন করতে পারেন।
এই সমাধানের মাধ্যমে আপনি বসন্তে স্থির ক্ষেত্রগুলি স্বাবলম্বিত করতে পারেন।
@Component
public class TestClass {
private static Test test;
@Autowired
public void setTest(Test test) {
TestClass.test = test;
}
}