Rumah >Java >javaTutorial >@Resource vs @Autowired: Bila hendak menggunakan Mana untuk Suntikan Ketergantungan?

@Resource vs @Autowired: Bila hendak menggunakan Mana untuk Suntikan Ketergantungan?

DDD
DDDasal
2024-11-09 00:45:021068semak imbas

@Resource vs @Autowired: When to Use Which for Dependency Injection?

@Resource vs @Autowired: Pemahaman Konseptual

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn