@Repository、@Service、@Controller 和 @Component 將類標識為Bean
Spring 自 2.0 版本開始,陸續引入了一些注解用於簡化 Spring 的開發。@Repository注解便屬於最先引入的一批,它用於將數據訪問層 (DAO 層 ) 的類標識為 Spring Bean。具體只需將該注解標注在 DAO類上即可。同時,為了讓 Spring 能夠掃描類路徑中的類並識別出 @Repository 注解,需要在 XML 配置文件中啟用Bean 的自動掃描功能,這可以通過<context:component-scan/>實現。如下所示:
為什么 @Repository 只能標注在 DAO 類上呢?這是因為該注解的作用不只是將類識別為Bean,同時它還能將所標注的類中拋出的數據訪問異常封裝為 Spring 的數據訪問異常類型。 Spring本身提供了一個豐富的並且是與具體的數據訪問技術無關的數據訪問異常結構,用於封裝不同的持久層框架拋出的異常,使得異常獨立於底層的框架。
Spring 2.5 在 @Repository的基礎上增加了功能類似的額外三個注解:@Component、@Service、@Constroller,它們分別用於軟件系統的不同層次:
1.Component 是一個泛化的概念,僅僅表示一個組件 (Bean) ,可以作用在任何層次。
2.Service 通常作用在業務層,但是目前該功能與 @Component 相同。
3.Constroller 通常作用在控制層,但是目前該功能與 @Component 相同。
