4 回答

TA貢獻1797條經(jīng)驗 獲得超4個贊
不,它不會拋出任何異常。但是分離數(shù)據(jù)庫邏輯和業(yè)務(wù)邏輯的想法是將@Service 用于服務(wù)實現(xiàn)(業(yè)務(wù)邏輯)和@Repository 用于存儲庫,即處理數(shù)據(jù)庫操作(它可以是CRUD、PagingAndSorting 等)。
因此,代碼變得模塊化并遵循設(shè)計模式和編碼標(biāo)準(zhǔn)。服務(wù)將使用存儲庫。您的處理程序?qū)⑹褂媚姆?wù)中的方法。這就是它的工作原理。

TA貢獻1806條經(jīng)驗 獲得超8個贊
根據(jù)Spring API 規(guī)范。
當(dāng)與 PersistenceExceptionTranslationPostProcessor 結(jié)合使用時,使用@Repository 注釋的類符合 Spring DataAccessException 轉(zhuǎn)換的條件。注釋類也被闡明了它在整個應(yīng)用程序架構(gòu)中的作用,用于工具、方面等。
因此 DataAccessException 旨在用戶代碼在不知道正在使用的特定數(shù)據(jù)訪問 API(例如 JDBC)的詳細(xì)信息的情況下查找并處理遇到的錯誤類型。
@Service 沒有任何 DataAccessException 翻譯,因此您可以在使用 @Service 注釋注釋的類上預(yù)期未翻譯的異常。它表明一個類是一個業(yè)務(wù)服務(wù)門面。

TA貢獻1803條經(jīng)驗 獲得超3個贊
@Service ,@Repository,@Controller都是專門化@Component的都稱為Spring Beans
@Component generic stereotype for any Spring-managed component
@Repository stereotype for persistence layer
@Service stereotype for service layer
@Controller stereotype for presentation layer (spring-mvc)
這一切都是為了分發(fā)關(guān)注點(演示、業(yè)務(wù)、數(shù)據(jù)庫),所以它不會像您要求的那樣出現(xiàn)任何異常。
您可以在此處參考更多信息- Spring Docs

TA貢獻1851條經(jīng)驗 獲得超5個贊
當(dāng)我們要開發(fā)任何項目時,它應(yīng)該是lossy coupled and maintainable
. 實現(xiàn)這一層分離很重要
@Service
- 使用@Service 注釋所有服務(wù)類。該層知道工作單元。您所有的業(yè)務(wù)邏輯都將在服務(wù)類中。通常,服務(wù)層的方法都包含在事務(wù)之下。您可以從服務(wù)方法進行多個 DAO 調(diào)用。如果一個事務(wù)失敗,所有事務(wù)都應(yīng)該回滾。
@Repository
- 使用 @Repository 注釋所有 DAO 類。您所有的數(shù)據(jù)庫訪問邏輯都應(yīng)該在 DAO 類中。
@Component
- 使用組件構(gòu)造型注釋您的其他組件(例如 REST 資源類)。
使用它們的原因:
使用@Repository 或@Service 而不是@Component 的主要優(yōu)點是很容易編寫一個AOP 切入點,例如,所有使用@Repository 注釋的類。
您不必在上下文 xml 文件中編寫 bean 定義。而是注釋類并通過自動裝配來使用它們。
專門的注釋有助于清楚地劃分應(yīng)用層(在標(biāo)準(zhǔn)的 3 層應(yīng)用中)。
什么是刻板印象 參考這里
@Component 任何 Spring 管理組件的通用原型
@Repository 原型用于持久層
@Service 原型用于服務(wù)層
@Controller 原型用于表示層(spring-mvc)
添加回答
舉報