4 回答
TA贡献1797条经验 获得超4个赞
不,它不会抛出任何异常。但是分离数据库逻辑和业务逻辑的想法是将@Service 用于服务实现(业务逻辑)和@Repository 用于存储库,即处理数据库操作(它可以是CRUD、PagingAndSorting 等)。
因此,代码变得模块化并遵循设计模式和编码标准。服务将使用存储库。您的处理程序将使用您的服务中的方法。这就是它的工作原理。
TA贡献1806条经验 获得超8个赞
当与 PersistenceExceptionTranslationPostProcessor 结合使用时,使用@Repository 注释的类符合 Spring DataAccessException 转换的条件。注释类也被阐明了它在整个应用程序架构中的作用,用于工具、方面等。
因此 DataAccessException 旨在用户代码在不知道正在使用的特定数据访问 API(例如 JDBC)的详细信息的情况下查找并处理遇到的错误类型。
@Service 没有任何 DataAccessException 翻译,因此您可以在使用 @Service 注释注释的类上预期未翻译的异常。它表明一个类是一个业务服务门面。
TA贡献1803条经验 获得超3个赞
@Service ,@Repository,@Controller都是专门化@Component的都称为Spring Beans
@Component generic stereotype for any Spring-managed component
@Repository stereotype for persistence layer
@Service stereotype for service layer
@Controller stereotype for presentation layer (spring-mvc)
这一切都是为了分发关注点(演示、业务、数据库),所以它不会像您要求的那样出现任何异常。
您可以在此处参考更多信息- Spring Docs
TA贡献1851条经验 获得超5个赞
当我们要开发任何项目时,它应该是lossy coupled and maintainable
. 实现这一层分离很重要
@Service
- 使用@Service 注释所有服务类。该层知道工作单元。您所有的业务逻辑都将在服务类中。通常,服务层的方法都包含在事务之下。您可以从服务方法进行多个 DAO 调用。如果一个事务失败,所有事务都应该回滚。
@Repository
- 使用 @Repository 注释所有 DAO 类。您所有的数据库访问逻辑都应该在 DAO 类中。
@Component
- 使用组件构造型注释您的其他组件(例如 REST 资源类)。
使用它们的原因:
使用@Repository 或@Service 而不是@Component 的主要优点是很容易编写一个AOP 切入点,例如,所有使用@Repository 注释的类。
您不必在上下文 xml 文件中编写 bean 定义。而是注释类并通过自动装配来使用它们。
专门的注释有助于清楚地划分应用层(在标准的 3 层应用中)。
什么是刻板印象 参考这里
@Component 任何 Spring 管理组件的通用原型
@Repository 原型用于持久层
@Service 原型用于服务层
@Controller 原型用于表示层(spring-mvc)
添加回答
举报