2013-03-20 136 views
11

我用Spring框架開發了幾年的web應用程序。最近,我的團隊的新鮮問我一個問題,春回大地@Component註解,什麼是註釋@Repository@Service@Controller的真正目的是什麼?我試圖給他答案,他們之間沒有區別,只是爲了識別Java Bean的類型。你知道,我的解釋缺乏說服力,他沒有買。春天有@Component註解,什麼是註釋@Repository,@Service,@Controller的真正目的是什麼?

所以我想問一個問題,註釋的真實目的是什麼@Repository,@Service,@Controller?這些註釋之間真正的區別是什麼?

回答

8

這個問題一直在問過:What's the difference between @Component, @Repository & @Service annotations in Spring?

在Spring 2.0及更高版本中,@Repository註解是 一個符合角色或刻板印象(也稱爲數據 訪問對象或DAO任何一類的標誌)的存儲庫。這個標記的用途是 是異常的自動翻譯。

春2.5引入進一步典型化註解:@Component, @Service和@Controller。 @Component是彈簧管理組件的任何 通用刻板印象。 @Repository,@Service和@Controller是 特@Component的更具體的使用情況,對 例如,在持久性,服務,和表示層,分別 。

因此,您可以註解你的組件類與@Component, 但如果用@Repository,@Service或註解它們@Controller ,你的類能更好地被工具 或與切面進行關聯適合處理。例如,這些原型註釋 是切入點的理想目標。

因此,如果您選擇@Component或@Service作爲 您的服務層,@Service顯然是更好的選擇。同樣, 如上所述,@Repository已經爲持久層 自動異常轉換的標誌。

+0

我的問題一個很好的解釋,我完全理解它。 Stijn Haus,非常感謝。 – 2013-03-20 12:49:19

相關問題