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

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

DDD
Lepaskan: 2024-11-09 00:45:02
asal
1104 orang telah melayarinya

@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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan