注解—DAO(@Repository)
2012-12-19 10:55
525 查看
@Repository用于标注数据访问组件,即DAO组件
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository 注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO 类上即可。同时,为了让 Spring 能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用 Bean 的自动扫描功能,这可以通过
<context:component-scan/> 实现。如下所示:
如此,我们就不再需要在 XML 中显式使用 <bean/> 进行 Bean 的配置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有 class 文件,所有标注了 @Repository 的类都将被注册为 Spring Bean。
为什么 @Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring 本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
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> |
为什么 @Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring 本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
相关文章推荐
- 解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题
- 解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题
- Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用
- Spring注解@Component、@Repository、@Service、@Controller区别
- Spring注解@Component、@Repository、@Service、@Controller区别
- spring 常用注解关系(@Component,@Controller,@Service,@Repository,@Autowired,@Resource),@Qualifier
- 继承h 4000 ibernateDaoSupport之后通过注解方式注入SessionFactory
- Mybatis 接口编程中dao 层接口没有注解和<bean> 为什么能被实例化为bean??
- Spring注解@Component、@Repository、@Service、@Controller区别
- HibernateDAO 生成方法注解
- Spring注解@Component、@Repository、@Service、@Controller区别
- Spring注解@Repository、@Service、@Controller 和 @Component
- 使用spring的@autowired注解,无法实例化dao,service,controller等
- IDEA SSM 项目 dao 层接口未添加注解使用时报错
- Spring注解@Component、@Repository、@Service、@Controller区别
- 利用泛型抽取Dao层,加事务注解问题(java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType)
- SpringAnnotation注解之@Component,@Repository,@Service,@Controller
- Spring注解@Component、@Repository、@Service、@Controller区别
- Spring注解的使用和区别:@Component、@Service、@Repository、@Controller
- spring hibernate注解实现泛型dao