Spring典型注解-@Controller,@Component,@Service,@Repository的异同

 

四个组件的关系可以用上图表示。

相同点:
@Controller,@Service,@Repository都有带@Component父注解,四个注解都可以说成是Component级别的注解,Spring框架自动扫描的注解也是检测是否有Component注解标记。把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>。这三个注解它们除了@Component的属性外还有其他的的场景应用。


@Repository

这个注解用来标识这个类是用来直接访问数据库的,dao层使用@repository注解。如@Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name = "userDao")注解告诉Spring,Spring把创建好的userDao注入给Service即可。

@Service

应用的业务逻辑通常在service层实现,因为我们一般使用@Service注解标记这个类属于业务逻辑层。如@Service("userService")注解是告诉spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action。

@Controller

这个注解主要告诉Spring这个类作为控制器,可以看做标记为暴露给前端的入口。@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Component

用来表示一个平常的普通组件,当一个类不合适用以上的注解定义时用这个组件修饰。

总结:

项目小的时候对这些注解没有特别的区分,但项目如果变得越来越大,那么就要划分的细致一些有一定的规则才方便大家的维护。有点像衣服,虽然都是衣服,但是有的是要穿出去开party的,有的是穿出去运动的,有的是休闲的。功能一样,但是用途不是很相同。

  • @Component spring基础的注解,被spring管理的组件或bean
  • @Repository 用于持久层,数据库访问层
  • @Service 用于服务层,处理业务逻辑
  • @Controller 用于呈现层,(spring-mvc)

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值