@Component vs @Repository dan @Service pada Musim Bunga

1. Pengenalan

Dalam tutorial ringkas ini, kita akan belajar mengenai perbezaan antara anotasi @Component, @Repository, @Service , dalam Spring Framework.

2. Anotasi Musim Bunga

Dalam kebanyakan aplikasi biasa, kami mempunyai lapisan yang berbeza seperti akses data, persembahan, perkhidmatan, perniagaan, dll.

Dan, di setiap lapisan, kami mempunyai pelbagai biji. Ringkasnya, untuk mengesannya secara automatik, Spring menggunakan anotasi pengimbasan classpath .

Kemudian, ia mendaftarkan setiap biji dalam ApplicationContext .

Berikut adalah gambaran ringkas mengenai beberapa anotasi berikut:

  • @Component adalah stereotaip generik untuk setiap komponen yang diuruskan oleh Spring
  • @Servis memberi anotasi kelas di lapisan perkhidmatan
  • @Repository memberi anotasi kelas pada lapisan ketekunan, yang akan bertindak sebagai repositori pangkalan data

Kami sudah mempunyai artikel tambahan mengenai anotasi ini. Oleh itu, kami hanya akan memberi tumpuan kepada perbezaan di antara mereka.

3. Apa yang berbeza?

Perbezaan utama antara stereotaip ini ialah ia digunakan untuk klasifikasi yang berbeza. Apabila kita memberi anotasi kelas untuk pengesanan automatik, maka kita harus menggunakan stereotaip masing-masing.

Sekarang, mari kita teliti dengan lebih terperinci.

3.1. @Komponen

Kita boleh menggunakan @Component di seluruh aplikasi untuk menandakan kacang sebagai komponen yang diuruskan Spring . Musim bunga hanya mengambil dan mendaftarkan kacang dengan @Component dan tidak mencari @Service dan @Repository secara umum.

Mereka didaftarkan di ApplicationContext kerana mereka sendiri diberi penjelasan dengan @Component :

@Component public @interface Service { } 
@Component public @interface Repository { } 

@Service dan @Repository adalah kes khas dari @Component . Secara teknikalnya sama tetapi kami menggunakannya untuk tujuan yang berbeza.

3.2. @Rositori

Tugas @Repository adalah untuk mendapatkan pengecualian khusus untuk ketekunan dan mengubahnya semula sebagai salah satu pengecualian Spring yang tidak dicentang .

Untuk musim bunga ini menyediakan PersistenceExceptionTranslationPostProcessor , yang memerlukan penambahan dalam konteks aplikasi kami:

Pemproses pasca kacang ini menambah penasihat pada kacang apa pun yang dianotasikan dengan @Repository.

3.3. @ Perkhidmatan

Kami menandakan kacang dengan @Service untuk menunjukkan bahawa ia memegang logik perniagaan . Jadi tidak ada keistimewaan lain kecuali menggunakannya di lapisan perkhidmatan.

4. Kesimpulan

Dalam menulis-up ini, kita belajar tentang perbezaan antara @Component, @Repository, @Service anotasi . Kami memeriksa setiap anotasi secara berasingan dengan bidang penggunaannya.

Sebagai kesimpulan, adalah idea yang baik untuk memilih anotasi berdasarkan konvensyen lapisan mereka.