@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:
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!