@Component、@Repository、@Service、@Controller区别

很长时间没写代码了,把以前学的那点框架知识忘光了,最近在写Java开源商城HapiShop,发现用@Component标记一个组件,所以查询了其相关的一些资料:
Spring 2.5 中提供@Component 注释外,还定义了几个拥有特殊语义的注释,
分别是:@Repository、@Service、@Controller
在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。
虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。
如果Web应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释,这样方便代码可阅读性也高。

@Component @Controller @Service @Repository的作用

1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id=”” class=””/>)
@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
下面写这个是引入component的扫描组件

1
<context:component-scan base-package="com.iitshare"/>

其中base-package为需要扫描的包,可以包括下面的子包,比如:com.iitshare.hapishop、com.iitshare.hapicms
1、@Service用于标注业务层组件
2、@Controller用于标注控制层组件(如struts中的action)
3、@Repository用于标注数据访问组件,即DAO组件.
4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
@RequestMapping("/admin/log")
public class LogController extends
    BaseController {
     
}
@Service("logServiceImpl")
public class LogServiceImpl extends BaseServiceImpl<Log, Long> implements
        LogService {
}
@Repository("logDaoImpl")
public class LogDaoImpl extends BaseDaoImpl<Log, Long> implements
    LogDao {
}

getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“***”)这样来指定。这种bean默认是单例的,如果想改变,可以使用以下方法:
@Service(“beanName”)
@Scope(“prototype”)来改变。
可以使用以下方式指定初始化方法和销毁方法(方法名任意):
@PostConstruct public void init() { }

@Component、@Repository、@Service、@Controller区别相关推荐

  1. java合集系列之pring@Component @Repository@Service的区别

    问题 在spring集成的框架中,注解在类上的@Component,@Repository,@Service等注解能否被互换?或者说这些注解有什么区别? 回答1 引用spring的官方文档中的一段描述 ...

  2. @Repository , @Service , @Controller 和 @Component

    用Spring MVC时@Controller注解的类将变成一个Spring MVC的控制器. 不用Spring MVC的情况下, 这四个注解没有区别. 根据注解的语义, 注解在类上面可以提高代码的可 ...

  3. Spring-Boot-Bean的使用,@Repository,@Service,@Controller,@Component

    前言 在Spring MVC的时候,我们使用xml来配置bean,如今的Spring boot推荐我们使用元注解的发生,那就听Spring Boot的推荐,下面我就为大家来介绍下Spring Boot ...

  4. Spring Boot Bean的使用,@Repository,@Service,@Controller,@Component

    前言 在Spring MVC的时候,我们使用xml来配置bean,如今的Spring boot推荐我们使用元注解的发生,那就听Spring Boot的推荐,下面我就为大家来介绍下Spring Boot ...

  5. r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    r中rep 在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repositor ...

  6. Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...

  7. @bean注解和@component注解的区别_通过源码查看 @Component,@Service 等注解是如何被解析的...

    点击上方"匠心零度",选择"设为星标" 做积极的人,而不是积极废人 来源:my.oschina.net/floor/blog/4325651 前言 1.@Com ...

  8. @service注解_Spring 中 @Component、@Service 等注解如何被解析的

    作者:温安适原文:https://juejin.im/post/6844904199688306702#heading-5 前言 @Component和@Service都是工作中常用的注解,Sprin ...

  9. Spring 中 @Component、@Service 等注解如何被解析?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/EjqL 前言 @ ...

  10. 面试官:注解@Component,@Service是如何被解析的?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 来源: https://my ...

最新文章

  1. 泰晤士报华科计算机排名,国内大学排行被“高估”的三所985大学,实力远小于排名,你认可吗?...
  2. 从事仪表专业学c语言有用吗,仪器仪表工程就业方向
  3. CVPR2021满分论文 | GeoSim: Camera Simulation
  4. code blocks 快捷键
  5. 渗透测试工作流程渗透测试类型法律边界
  6. HDU - 1542 Atlantis(线段树+扫描线)
  7. vue js xlsx 读取 本地 excel
  8. 没有上司的舞会(洛谷-P1352)
  9. 安装hadoop1.2.1(参考hadoop实战第二版)
  10. win7无法访问局域网内电脑_win7系统局域网无法访问原因 win7局域网无法访问解决方法【图文】...
  11. Thymeleaf 用法
  12. Realtek 8852BE 网卡Linux驱动
  13. swagger2报错Illegal DefaultValue null for parameter type integer
  14. Android 仪表盘 图片 中心 旋转
  15. 黑客宣称可以越狱苹果T2安全芯片
  16. HKC神盾显示器MG27Q - Nano IPS显示器的好选择
  17. python 创建一个空向量,python 创建一个空向量_python 创建一维的0向量实例
  18. 图片损坏修复软件,分享好用靠谱的软件
  19. QGIS基础:创建矢量数据(栅格矢量化)
  20. hamlet.txt英文哈姆雷特下载及实现文本词频统计

热门文章

  1. 编写Java 制作留言板_JSP+Servlet+JavaBean制作简单留言板
  2. mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
  3. python类的静态属性和静态方法_详解Python中的静态方法与类成员方法
  4. qt toutf8函数_qt中的toUtf8, toLatin1, Local8bit, toUcs4(转)
  5. python until语句_Python3 循环
  6. 插值算法C实现(一元全区间)
  7. QR分解原理与C实现(一般实矩阵)
  8. 鸿蒙投屏和普通投屏,华为智慧屏SE发布:预装鸿蒙 可一碰投屏
  9. python做的数据图表怎么在flask中显示_Flask使用Pyecharts在单个页面展示多个图表的方法...
  10. 追求极致的AI·OS——AI·OS引擎平台