Spring (一):Spring注解@Component、@Repository、@Service、@Controller区别

【AirSim+PX4】WSL2上运行PX4连接Airsim步骤 在 Linux 命令行中输入以下命令以添加(或改变)环境变量。注意,此处的 IP 地址应为。4.启动 sln 文件的调试以进入 UE4 编辑器,并在 Linux 中启动 PX4。 阅读详情

Spring注解@Component、@Repository、@Service、@Controller区别

分类: Sping 48209人阅读 评论(7) 收藏 举报

很长时间没做web项目都把以前学的那点框架知识忘光了,今天把以前做的一个项目翻出来看一下发现用·@Component标记一个组件,而网上有的用@Service标记组件,我晕就查了一下资料:

Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。
在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。
虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。
所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

  1. @Service
  2. public class VentorServiceImpl implements iVentorService {
  3. }
  4. @Repository
  5. public class VentorDaoImpl implements iVentorDao {
  6. }
@Service
public class VentorServiceImpl implements iVentorService {   
}
@Repository
public class VentorDaoImpl implements iVentorDao { 
}

在一个稍大的项目中,如果组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。
Spring2.5为我们引入了组件自动扫描机制,他在类路径下寻找标注了上述注解的类,并把这些类纳入进spring容器中管理。
它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息:

代码

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  9. <context:annotation-config />
  10. <context:component-scan base-package=”com.eric.spring”>
  11. </beans>
<?xml version="1.0" encoding="UTF-8" ?> 
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
			    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 
   
	<context:annotation-config />
	<context:component-scan base-package=”com.eric.spring”>   
</beans> 

1.annotation-config是对标记了 Spring's @Required、@Autowired、JSR250's @PostConstruct、@PreDestroy、@Resource、JAX-WS's @WebServiceRef、EJB3's @EJB、JPA's @PersistenceContext、@PersistenceUnit等注解的类进行对应的操作使注解生效。
2.base-package为需要扫描的包(含所有子包),负责扫描那些类有注解。

getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“aaaaa”)这样来指定。
这种bean默认是“singleton”的,如果想改变,可以使用@Scope(“prototype”)来改变。

可以使用以下方式指定初始化方法和销毁方法:

  1. @PostConstruct
  2. public void init() {
  3. }
  4. @PreDestroy
  5. public void destory() {
  6. }
@PostConstruct
public void init() { 
} 
@PreDestroy
public void destory() { 
} 


注入方式:

把DAO实现类注入到action的service接口(注意不要是service的实现类)中,注入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,
然后属性加上@Autowired后不需要getter()和setter()方法,Spring也会自动注入。

在接口前面标上@Autowired注释使得接口可以被容器注入,如:

  1. @Autowired
  2. @Qualifier("chinese")
  3. private Man man;
@Autowired
@Qualifier("chinese")
private Man man; 

当接口存在两个实现类的时候必须使用@Qualifier指定注入哪个实现类,否则可以省略,只写@Autowired。

http://crabboy.iteye.com/blog/339840

QFN封装芯片手工焊接实战:从焊盘处理到拖焊技巧 本文详细介绍了QFN封装芯片手工焊接的全过程,从焊盘处理到拖焊技巧,再到常见问题的现场修复方法。通过实战经验分享,帮助工程师和DIY爱好者掌握0.5mm小间距QFN芯片的焊接技术,提升焊接成功率和质量。重点讲解了垂直与平行拖焊手法的对比应用,以及焊后清理与质量检验的关键步骤。 阅读详情

相关推荐

rk3568 android 11.0 userdata 改为ext4格式

功能:解决设备在恢复出厂设置进行擦除数据的时候卡住问题。 1.修改userdata分区为ext4格式 diff --git a/device/rockchip/common/scripts/fstab_tools/fstab.in b/device/rockchip/common/scripts/fstab_tools/fstab.in index 583e75579d..036336835d 100755 --- a/device/rockchip/common/scripts/fstab_tools/

chgh1306的专栏 2576

spring注解@Component、@controller、@service、@repository

声明bean的注解:@Component、@controller、@service、@repository 一、@Component注解 作用:把普通pojo实例化到spring容器中,相当于之前xml配置文件中的    &lt;bean id="" class=""/&gt;  ) Component注解也就是“Controller注解”、“Service注解”和“Repository...

tonghenyantou的博客 7037

STM32无线遥控小车的设计

基于SPI通信的无线摇杆小车的设计

weixin_69414084的博客 2927

解释@Component @Controller @Service @Repository

@Component大致可以分为以下几个注解 @controller控制器(注入服务),用于标注控制层组件(如struts中的action) @service服务(注入dao),用于标注业务层组件 @repository dao(实现dao访问),用于标注数据访问组件,即DAO组件 @component (把普通pojo实例化到spring容器中,相当于配置文件中的<bea...

我爱编程持之以恒 3331

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

免Root抓包神器Packet Capture:安卓App数据捕获全攻略

本文详细介绍了免Root安卓抓包神器Packet Capture的安装与使用全攻略。通过利用安卓系统的VPN Service API,该工具无需Root权限即可捕获并解密App的HTTP/HTTPS网络流量。文章从核心原理、证书安装、实战抓包步骤到结果分析与常见问题排查,提供了完整指南,是移动端开发、安全测试和数据分析的实用利器。

weixin_29232507的博客 1075

【注解】@Component,@Repository、@Service、 @Controller,@Autowird 常用注解

作用: 用于标识一个类为 Spring 组件,将其纳入 Spring IoC 容器中管理。作用: 用于自动装配(注入) Spring 容器中的 Bean,通过类型匹配进行注入。作用: 通常作为 @Component 的特例,用于标识一个类为业务层服务组件。

代码的魅力,根本走不出来 2737

伺服电机入门01

编码器输出 旋转信号 , 接收端: 使用ADC 捕捉旋转信号 ,转成数字信号,驱动器得到数字处理, 因为信号量是模拟信号, mcu mpu 等芯片通常内部处理是数字,通过adc 得到数字cpu 才能识别 传输过来的pos 等信息。IPM 芯片示例, IRAM256A 这个芯片已经停产,有换新的,,下面示例来自stmbl 高功率方案,4 步进电机 有全步控制,半步控制 ,微步控制,FOC控制,步进电机也是可以做伺服系统的。以下面几种信号是可以细分,也就是通过细分增加编码器的分辨率,

qq_25160559的博客 969

Spring中@Controller、@Repository、@Service、@Component注解的作用详解

4、@Component:把普通的类实例化到spring容器中,相当于配置文件中的 。泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Repository、@Services等的时候),我们就可以使用@Component来标注这个类。总之,@Component,@Service,@Controller,@Repository注解的类,Spring都会把这些类初始化到Spring容器中,把这些类纳入到spring容器中进行管理。

莫绝岚的小屋 1904

TPS563201DDCR电路翻车实录:从原理图到PCB,我踩过的5个坑及补救方法

本文详细记录了使用TPS563201DDCR电源芯片设计电路时遇到的5个常见问题及解决方案,包括EN引脚配置、BST电容选型、反馈网络设计、PCB布局优化以及散热处理。通过实际案例和数据分析,帮助工程师避免类似错误,提升电源模块的可靠性和效率。

weixin_42532938的博客 529

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 269

Spring注解@Component、@Repository、@Service、@Controller区别

问题:在spring集成的框架中,注解在类上的@Component,@Repository,@Service,@Controller等注解能否被互换?或者说这些注解有什么区别及各自的功能? 原文链接:https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/whats-the-differen

小嗨嗨的博客 3632

PCL 直通滤波

内容抄自优快云点云侠:[【2024最新版】PCL点云处理算法汇总(C++长期更新版)](https://blog.youkuaiyun.com/qq_36686437/article/details/114160640)。质量无忧,永久免费,可放心复制粘贴。

m0_51204289的博客 903

Spring学习笔记(一):Spring注解@Component、@Repository、@Service、@Controller区别

一:转载 Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。 在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。 虽然目前这3 个注释和

汤圆学Java 1075

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring注解之@Component、@Controller、@Service、@Repository

Spring注解@Component、@Controller、@Service、@Repository放在一起讲的原因很简单,因为,这四个注解实际上没有任何本质区别,只是后三者只是涉及一些命名规范而已,四者的注解效果确实一致。关于这里的命名规范就好比苹果叫苹果,你不会说苹果是菠萝。这样的好处显然易见,听到别人说苹果,你就知道是苹果,不会想到菠萝。而编程中@Controller你会知道这是一个Controller表现层,@Service代表这是一个Service业务层。 1、使用这四个注解的前提

宜春 4008

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

@Component, @Service, @Repository, @Controller 有什么本质区别吗?为什么需要这么多不同的注解?

通用/任何层 | 一个通用的 Spring 管理组件 | 无 || 表现层 (Web Layer) | 一个目标。// 这个切点会匹配所有被 @Service 注解的类中的所有公共方法@Point处理 Web 请求的控制器 | 无(但与 Spring MVC 深度集成)|@Around("service | 业务逻辑层 (Service Layer) | 一个处理业务逻辑的服务 | 无(但常作为 AOP 事务Layer()")// ... 在方法切面的目标)|

专注于技术分享 1807

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring使用@Component、@Repository、@Service、@Controller注解

Spring框架提供了@Component、@Repository、@Service、@Controller注解,关于这些注解的命名方式,它们的作用差不多,都是将对象识别为bean对象,然后将bean对象交给Spring容器进行管理。只是为了区分业务场景所采取的特定功能化的注解组件,它们本质的原理(暴露实现类)是相同的。官方的原话是:带此注解的类看为组件,当使用基于注解的配置和类路径扫描的时候,这...

pan_junbiao的博客 4052

问:Spring注解 @Component, @Controller, @Repository, @Service怎么用,有什么区别?

本文介绍了Spring框架中的四个重要注解:@Component、@Controller、@Service和@Repository。它们分别用于标记通用组件、控制器、服务层和数据访问层类。这些注解不仅简化了Spring应用的配置,还提高了代码的可维护性。文章通过代码示例阐述了它们的用法,帮助开发者更好地理解和使用这些注解。

技术铺掌柜 1280

Spring注解@Component、@Repository、@Service、@Controller区别 .

Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这3 个注释和 @Component...

weixin_34007886的博客 2494

@Controller,@Component,@Service,@Repository 区别与联系

@Component @Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。 @Component有几个衍生注解,按照三处架构分层 dao[ @Repository ] service[ @service ] controller[ @Controller] 因此,当你的一个类被@Component所注解,那么就意味着同样可以用@Repository, @Service, @Controller来替代它,同时这些注解会具备有更多的功能,而且功能各异。 @Control

ヤ亽o﹏妳的博客 2294

Spring框架中注解@Component, @Repository, @Service,@Controller的区别

官网引用 引用spring的官方文档中的一段描述: 在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支持自动处理数据库操作产生的异常 在Spring2.5版本中,引入了更多的Spring类注解:@Component,@Service,@Controller。@Component是一个通用的Sprin...

miaoerlun3906的博客 624

Spring注解 @Component、@Controller、@Service、@Repository

1.@Component 在annotaion配置注解中用@Component来表示一个通用注释,用于说明一个类是一个spring容器管理的类。也就是该类已经进入到spring的管理容器中了。而@Controller, @Service, @Repository是@Component注解的细化,也可以说是具体化,这三个注解比@Component带有更多的语义,它们分别对应了控制层、服务层、持久层

laowang2915的博客 791
上一篇: JAVA 基础知识
下一篇: Spring(二) @Autowired
ufocode
博客等级 码龄23年 36粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值