@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 (daripada 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 mereka pendekatan:
Gelagat @Resource Spring
Walaupun spesifikasi JSR-250 untuk @Resource mengutamakan pengambilan semula berdasarkan nama, pelaksanaan Spring @Resource termasuk sandaran mekanisme. 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!