আমি কিছুদিনের জন্য বসন্তে নির্ভরতা ইনজেকশন ব্যবহার করে আসছি এবং আমি বুঝতে পারি যে এটি কীভাবে কাজ করে এবং এটি ব্যবহারের কিছু কী কী মতামত রয়েছে। যাইহোক, আমি যখন একটি নতুন ক্লাস তৈরি করি তখন আমি প্রায়শই ভাবছি - এই ক্লাসটি কি স্প্রিং আইওসি কনটেইনার দ্বারা পরিচালিত হওয়া উচিত?
এবং আমি @ অটোভায়ার্ড টিকা, এক্সএমএল কনফিগারেশন, সেটার ইনজেকশন, কনস্ট্রাক্টর ইনজেকশন ইত্যাদির মধ্যে পার্থক্য সম্পর্কে কথা বলতে চাই না My আমার প্রশ্নটি সাধারণ general
ধরা যাক আমাদের একটি রূপান্তরকারী সহ একটি পরিষেবা আছে:
@Service
public class Service {
@Autowired
private Repository repository;
@Autowired
private Converter converter;
public List<CarDto> getAllCars() {
List<Car> cars = repository.findAll();
return converter.mapToDto(cars);
}
}
@Component
public class Converter {
public CarDto mapToDto(List<Car> cars) {
return new ArrayList<CarDto>(); // do the mapping here
}
}
স্পষ্টতই, রূপান্তরকারীটির কোনও নির্ভরতা নেই, সুতরাং এটির স্বাবলম্বী হওয়া প্রয়োজন নয়। তবে আমার কাছে এটি স্বতঃশক্তিযুক্ত হিসাবে ভাল বলে মনে হচ্ছে। কোডটি ক্লিনার এবং পরীক্ষা করা সহজ। যদি আমি ডিআই ছাড়াই এই কোডটি লিখি তবে পরিষেবাটি এর মতো দেখাবে:
@Service
public class Service {
@Autowired
private Repository repository;
public List<CarDto> getAllCars() {
List<Car> cars = repository.findAll();
Converter converter = new Converter();
return converter.mapToDto(cars);
}
}
এখন এটি পরীক্ষা করা আরও অনেক কঠিন। তদুপরি, প্রতিটি রূপান্তর ক্রিয়াকলাপের জন্য নতুন রূপান্তরকারী তৈরি করা হবে, যদিও এটি সর্বদা একই অবস্থায় থাকে, যা ওভারহেডের মতো মনে হয়।
স্প্রিং এমভিসিতে কয়েকটি সুপরিচিত নিদর্শন রয়েছে: সংগ্রহস্থলগুলি ব্যবহার করে পরিষেবা এবং পরিষেবা ব্যবহার করে নিয়ন্ত্রক using তারপরে, যদি रिपোজিটরিটি স্বতঃশক্ত হয় (যা এটি সাধারণত হয়) তবে পরিষেবাটিও স্বায়ত্তশাসিত হতে হবে। এবং এটি বেশ পরিষ্কার। তবে আমরা কখন কমপোন্ট টীকাটি ব্যবহার করব? আপনার যদি কিছু স্থির ব্যবহারের ক্লাস থাকে (যেমন রূপান্তরকারী, ম্যাপার্স) - আপনি সেগুলি স্বতঃসম্পাদন করেন?
আপনি কি সব ক্লাসকে স্বায়ত্তশাসিত করার চেষ্টা করছেন? তারপরে সমস্ত শ্রেণি নির্ভরতা ইনজেকশন করা সহজ (আবারও, বোঝা সহজ এবং পরীক্ষা সহজ)। অথবা আপনি যখন কেবল একেবারে প্রয়োজনীয় তখনই স্বতঃশক্তি দেওয়ার চেষ্টা করেন?
অটোয়ারিং কখন ব্যবহার করতে হবে সে সম্পর্কে আমি কিছু সাধারণ নিয়ম সন্ধানে কিছুটা সময় ব্যয় করেছি, তবে আমি কোনও নির্দিষ্ট টিপস খুঁজে পাইনি। সাধারণত, লোকেরা "আপনি ডিআই ব্যবহার করেন?" (হ্যাঁ / না) "বা" আপনি কী ধরণের নির্ভরতা ইনজেকশন পছন্দ করেন "সম্পর্কে কথা বলেন, যা আমার প্রশ্নের উত্তর দেয় না।
আমি এই বিষয় সম্পর্কে কোনও টিপস জন্য কৃতজ্ঞ হবে!