Biên Dịch : Nguyễn Hoàng Đạt - Lớp Java07
Email : hoangdat3179@gmail.com
Bài viết gốc : https://www.baeldung.com/spring-component-repository-service

1. Giới thiệu

Trong hướng dẫn nhanh này, chúng ta sẽ tìm hiểu về sự khác biệt giữa các chú thích @Component, @Repository, @Service , trong Spring Framework.

2. Chú thích trong Spring mvc

Trong hầu hết các ứng dụng điển hình, chúng tôi có các lớp riêng biệt như truy cập dữ liệu, bản trình bày, dịch vụ, kinh doanh, v.v.

Và, trong mỗi lớp, chúng ta có nhiều loại đậu khác nhau. Nói một cách đơn giản, để phát hiện chúng tự động, Spring sử dụng chú thích quét classpath .

Sau đó, nó đăng ký từng bean trong ApplicationContext .

Dưới đây là tổng quan nhanh về một số chú thích sau:

  • @Component là một khuôn mẫu chung cho bất kỳ thành phần nào do Spring quản lý
  • @Service chú thích các lớp ở lớp dịch vụ
  • @Repository chú thích các lớp ở lớp bền vững, lớp này sẽ hoạt động như một kho lưu trữ cơ sở dữ liệu

3. Có gì khác nhau?

Sự khác biệt chính giữa các khuôn mẫu này là chúng được sử dụng để phân loại khác nhau. Khi chúng ta chú thích một lớp để tự động phát hiện, thì chúng ta nên sử dụng khuôn mẫu tương ứng.

Bây giờ, chúng ta hãy đi qua chúng chi tiết hơn.

3.1. @Component

Chúng ta có thể sử dụng @Component trên toàn ứng dụng để đánh dấu các bean là thành phần được quản lý của Spring . Spring chỉ chọn và đăng ký bean với @Component và không tìm kiếm @Service@Repositor nói chung.

Chúng được đăng ký trong ApplicationContext vì bản thân chúng được chú thích bằng @Component.

@Service@Repository là các trường hợp đặc biệt của @Component . Chúng giống nhau về mặt kỹ thuật nhưng chúng tôi sử dụng chúng cho các mục đích khác nhau.

3.2. @Repository

Công việc của @Repository là nắm bắt các ngoại lệ cụ thể về độ bền và ném lại chúng như một trong những ngoại lệ chưa được kiểm tra thống nhất của Spring .

Đối với mùa xuân này, cung cấp PersistenceExceptionTranslationPostProcessor , yêu cầu thêm vào ngữ cảnh ứng dụng của chúng tôi:

Bộ xử lý bài viết bean này thêm một cố vấn cho bất kỳ bean nào được chú thích bằng @Repository.

3.3. @Service

Chúng tôi đánh dấu bean bằng @Service để chỉ ra rằng nó nắm giữ logic nghiệp vụ . Vì vậy, không có bất kỳ đặc biệt nào khác ngoại trừ việc sử dụng nó trong lớp dịch vụ.

4. Kết luận

Trong bài viết này, chúng tôi đã tìm hiểu về sự khác biệt giữa các chú thích @Component, @Repository, @Service . Chúng tôi đã kiểm tra từng chú thích riêng biệt với các lĩnh vực sử dụng của chúng.

Như một kết luận, bạn luôn nên chọn chú thích dựa trên các quy ước lớp của chúng.