Rumah >Java >javaTutorial >@Resource vs @Autowired: Bila hendak menggunakan Mana untuk Suntikan Ketergantungan?
Apabila melibatkan suntikan pergantungan di Java, pembangun sering menghadapi pilihan antara @Resource dan anotasi @Autowired. Kedua-dua anotasi boleh menyuntik kebergantungan dengan berkesan, tetapi terdapat perbezaan yang ketara dalam semantiknya.
Anotasi @Resource, sebahagian daripada spesifikasi JSR-250, membayangkan permintaan untuk sumber yang diketahui mengikut nama. Nama boleh ditentukan secara langsung atau disimpulkan daripada penetap beranotasi atau nama medan.
Sebaliknya, @Autowired (atau @Inject) menekankan pendekatan berasaskan jenis. Ia cuba menyuntik komponen yang sesuai berdasarkan jenisnya dan bukannya namanya.
Perbezaan konseptual ini penting untuk diperhatikan, kerana ia secara langsung mempengaruhi kelakuan anotasi ini. @Resource bergantung pada nama sumber untuk mencari pergantungan tertentu, manakala @Autowired memfokuskan pada pendawaian automatik berdasarkan keserasian jenis.
Rangka kerja Spring, walau bagaimanapun, menyediakan pelaksanaan @Resource yang merangkumi sandaran机制. Jika tiada sumber dengan nama yang ditentukan ditemui, ia menggunakan suntikan pergantungan berasaskan jenis seperti @Autowired. Walaupun mudah, sandaran ini sering menyebabkan kekeliruan kerana pembangun mungkin tersilap menggunakan @Resource untuk pendawaian berasaskan jenis.
Untuk mengelakkan kekaburan sedemikian, adalah disyorkan untuk menggunakan @Resource untuk senario di mana suntikan pergantungan berasaskan nama secara eksplisit dikehendaki dan @Autowired (atau @Inject) untuk pendawaian automatik berasaskan jenis.
Atas ialah kandungan terperinci @Resource vs @Autowired: Bila hendak menggunakan Mana untuk Suntikan Ketergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!