javascript
在Spring@Component vs @Repository vs @Service
介紹:
借助Spring的自動掃描功能,它可以自動檢測我們的應(yīng)用程序中定義的各種bean。 我們通常使用可用的Spring注釋之一來注釋我們的bean-@ Component,@ Repository,@ Service,@ Controller 。
在檢測到bean時,Spring只需將其注冊到ApplicationContext中 。
在本快速教程中,我們將研究@ Component,@ Repository和@Service Spring批注之間的區(qū)別。
我們可以使用@Component注釋將bean標記為Spring管理的組件。 換句話說, 它是任何Spring托管組件的通用構(gòu)造型 。
我們可以使用<context:component-scan>標記啟用自動掃描。 在自動掃描過程中,Spring將掃描并注冊所有標有@Component注釋的bean:
@Component public class Employee {...}@Repository批注是@Component批注的特化:
@Component public @interface Repository { }由于@Repository是@Component的一種 ,因此Spring也會自動掃描并注冊它們。
@Repository是持久層的構(gòu)造型。 它的工作是捕獲所有與持久性相關(guān)的異常,并將其作為Spring DataAccessException重新拋出。
為此,我們應(yīng)該在應(yīng)用程序上下文中配置PersistenceExceptionTranslationPostProcessor :
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>該bean后處理器將顧問程序添加到所有標有@Repository的 bean。 顧問的職責是將特定于平臺的異常轉(zhuǎn)換為Spring統(tǒng)一的未經(jīng)檢查的異常。
就像@Repository一樣,@Service是@Component的另一個特化:
@Component public @interface Service { }就像@Repository一樣,@Service也是@Component的一種 。 這意味著Spring也將自動檢測此類bean。
@Service批注表示我們的bean擁有一些業(yè)務(wù)邏輯。 到目前為止,它沒有提供@Component以外的任何特定行為。
盡管如此, 我們?nèi)詰?yīng)使用@Service注釋對服務(wù)層bean進行注釋,以使意圖清晰明了。 此外,我們永遠不知道Spring是否會選擇為其添加某些特定功能。
NutShell的差異:
讓我們快速總結(jié)一下@ Component,@ Repository和@Service之間的區(qū)別:
- @Component是最通用的構(gòu)造型,并將bean標記為Spring托管的組件
- @Service和@Repository批注都是@Component批注的特化
- @Repository是用于持久層的構(gòu)造型。 它將所有與持久性相關(guān)的異常轉(zhuǎn)換為Spring的DataAccessException
- @Service用于服務(wù)層的bean。 目前,它不提供@Component以外的任何其他功能
- 在適用的情況下,總是最好使用@Repository和@Service批注而不是@Component 。 它更清楚地傳達了豆子的意圖
結(jié)論:
在本微型教程中,我們了解了流行的Spring批注之間的區(qū)別– @ Component,@ Service和@Repository。
總而言之,我們應(yīng)該始終傾向于根據(jù)其特定的圖層約定使用注釋。
翻譯自: https://www.javacodegeeks.com/2019/05/component-repository-service-spring.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的在Spring@Component vs @Repository vs @Service的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 处理异常功能样式
- 下一篇: Servlet和JSP之间的区别