天天看點

注解—DAO(@Repository)

@Repository用于标注資料通路元件,即DAO元件

Spring 自 2.0 版本開始,陸續引入了一些注解用于簡化 Spring 的開發。@Repository 注解便屬于最先引入的一批,它用于将資料通路層 (DAO 層 ) 的類辨別為 Spring Bean。具體隻需将該注解标注在 DAO 類上即可。同時,為了讓 Spring 能夠掃描類路徑中的類并識别出 @Repository 注解,需要在 XML 配置檔案中啟用 Bean 的自動掃描功能,這可以通過 <context:component-scan/> 實作。如下所示:

// 首先使用 @Repository 将 DAO 類聲明為 Bean       
package bookstore.dao;      
@Repository       
public class UserDaoImpl implements UserDao{ …… }       
// 其次,在 XML 配置檔案中啟動 Spring 的自動掃描功能       
<beans … > …… <context:component-scan base-package=”bookstore.dao” /> …… </beans>      

如此,我們就不再需要在 XML 中顯式使用 <bean/> 進行 Bean 的配置。Spring 在容器初始化時将自動掃描 base-package 指定的包及其子包下的所有 class 檔案,所有标注了 @Repository 的類都将被注冊為 Spring Bean。

為什麼 @Repository 隻能标注在 DAO 類上呢?這是因為該注解的作用不隻是将類識别為 Bean,同時它還能将所标注的類中抛出的資料通路異常封裝為 Spring 的資料通路異常類型。 Spring 本身提供了一個豐富的并且是與具體的資料通路技術無關的資料通路異常結構,用于封裝不同的持久層架構抛出的異常,使得異常獨立于底層的架構。

繼續閱讀