Spring 中 @Component、@Service、@Controller、@Repository 介绍

1. 定义

  • @Component:带该注释的类是一个“组件(Component)”。当使用基于注释的配置和类路径扫描时,这些类被认为是自动检测的候选类
  • @Service:表示一个带注释的类是一个“服务(Service)”,最初由域驱动设计(Evans,2003)定义为“一个作为接口提供的操作,它独立于模型之外,没有封装的状态。”
  • @Controller:表示一个带注释的类是一个“控制器(Controller)”(如一个web控制器)。
  • @Repository:表示一个带注释的类是一个“存储库(Repository)”,最初由领域驱动设计(Evans,2003)定义为“一种封装存储、检索和搜索行为的机制,它模拟一组对象”。

注意:在 Spring 源码中,除了 Component 外的三个注解都在开始部分引入了 @Component 注解,本质上这四个注解的源码内容没有任何区别,因此后面的这三个注解与 Component 的作用是一样的。之所以要额外的引出这三个注解,是为了更好的与 Web 开发中常用的三层结构相对应。


2. 关系

  1. @Component是基础注解,表示一个 JavaBean 可以被注入到 Spring 容器中。

  2. @Controller 用在表现层,对来自前端的请求进行转发处理与重定向。

  3. @Repository 用在持久层,标注 DAO 类,表示这个类可以对数据库进行数据的读取或者写入。

  4. @Service 用在业务层,用来处理业务逻辑。

注意:传统的JavaEE三层架构分别是:表现层、业务层和持久层。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值