【问题标题】:can we make exceptions(thrown from DAO methods) eligible for Spring DataAccessException without using @Repository annotation in DAO我们可以在不使用 DAO 中的 @Repository 注释的情况下使异常(从 DAO 方法抛出)符合 Spring DataAccessException 的条件吗
【发布时间】:2015-04-24 20:22:48
【问题描述】:

如果我不使用 @Repository 注释 DAO 类,那仍然会使未经检查的异常(从 DAO 方法抛出)有资格转换为 Spring DataAccessException 吗?谁能解释一下?与@Repository 注释有点混淆

【问题讨论】:

    标签: spring hibernate spring-mvc dao spring-aop


    【解决方案1】:

    @Repository 的定义在此 link 上给出

    表明一个带注释的类是一个“Repository”,最初 由领域驱动设计 (Evans, 2003) 定义为“一种机制 封装存储、检索和搜索行为,模拟一个 对象集合”。

    实现传统 J2EE 模式(例如“数据访问”)的团队 Object" 也可以将此构造型应用于 DAO 类,但要小心 应该理解数据访问之间的区别 这样做之前的对象和 DDD 样式的存储库。这个注解是 通用的刻板印象和个别团队可能会缩小他们的 语义并酌情使用。

    这样注释的类有资格使用 Spring DataAccessException 与 a 结合使用时的翻译 PersistenceExceptionTranslationPostProcessor。带注释的类是 还阐明了其在整个应用程序架构中的作用 用于工具、方面等的目的。

    如果我不使用 @Repository 注释 DAO 类会怎样? 使未经检查的异常(从 DAO 方法抛出)有资格转换为 Spring DataAccessException??

    不,因为根据此link 提供的详细信息

    自动应用持久性异常的 Bean 后处理器 翻译为任何标有 Spring 的 @Repository 注释的 bean, 将相应的 PersistenceExceptionTranslationAdvisor 添加到 暴露的代理(现有的 AOP 代理或新生成的代理 实现了目标的所有接口)。

    希望这能帮助你理解!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2013-01-25
      • 2012-06-22
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多