Rumah  >  Artikel  >  Java  >  @Resource vs @Autowired: Bila Memilih Anotasi Suntikan Ketergantungan Yang Mana?

@Resource vs @Autowired: Bila Memilih Anotasi Suntikan Ketergantungan Yang Mana?

DDD
DDDasal
2024-11-13 15:37:02605semak imbas

@Resource vs @Autowired: When to Choose Which Dependency Injection Annotation?

@Resource vs @Autowired: A Deeper Dive

Dalam bidang suntikan pergantungan (DI), anotasi memainkan peranan penting dalam mewujudkan hubungan antara objek. Dua anotasi yang digunakan secara meluas ialah @Resource (dari JSR-250) dan @Autowired (daripada rangka kerja Spring). Tetapi anotasi yang manakah harus anda pilih?

@Resource: Name-Based Retrieval

@Resource berfungsi sebagai mekanisme untuk mendapatkan semula sumber dengan namanya. Nama ini boleh ditentukan melalui parameter "nama" anotasi atau disimpulkan daripada medan beranotasi atau nama penetap. Dengan menggunakan @Resource, anda secara eksplisit meminta sumber yang diketahui oleh pengecam khususnya.

@Autowired: Type-Based Wiring

Sebaliknya, @Autowired (atau @Inject dalam Java EE) cuba menyambungkan komponen yang sepadan dengan jenis yang diperlukan. Ia melakukan ini dengan memeriksa jenis medan beranotasi atau penetap dan mencari konteks aplikasi untuk kacang yang serasi. Anotasi @Qualifier boleh digunakan bersama @Autowired untuk mengecilkan carian kepada nama kacang tertentu, jika dikehendaki.

Perbezaan Konseptual

Perbezaan asas antara @Resource dan @Autowired terletak pada pendekatan mereka:

  • @Resource: Memfokuskan pada mendapatkan semula sumber tertentu yang dikenali dengan namanya.
  • @Autowired: Bertujuan untuk menyambung secara automatik komponen yang sesuai berdasarkan jenisnya.

Gelagat @Resource Spring

Manakala spesifikasi JSR-250 untuk @Resource mengutamakan nama -pengambilan semula berasaskan, pelaksanaan Spring @Resource termasuk mekanisme sandaran. Jika resolusi berasaskan nama gagal, ia lalai kepada resolusi berasaskan jenis yang serupa dengan @Autowired. Ciri kemudahan ini boleh menyebabkan kekeliruan, kerana pembangun mungkin secara tidak sengaja menggunakan @Resource untuk pendawaian automatik berasaskan jenis.

Atas ialah kandungan terperinci @Resource vs @Autowired: Bila Memilih Anotasi Suntikan Ketergantungan Yang Mana?. 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