【SpringBoot】springboot下常用的注解含义讲解

Spring SpringMVC SpringBoot 常用注解说明 Spring SpringMVC SpringBoot 常用注解说明Spring注解与xml配置的区别不使用注解的案例@Autowired@Qualifier@Resource@Service使用注解来构造IoC容器@Component@Controller@Service@ RepositorySpring常用注解汇总Spring MVC@Controller@RequestMapping使用 ... 阅读详情

 

目录

1. @Component,@Repository,@Service,@Controller

2. @Component注解和@Bean注解的区别

3. @Autowired与@Resource

3.1 @Autowired

3.2 @Qualifier和@Primary

3.3 @Resource

4. @Value和@ConfigurationProperties

5. @RequestParam,@RequestPart,@RequestBody

6. 持续更新中......


1. @Component,@Repository,@Service,@Controller

先来说说这几个比较简单的注解,这些注解是用来向Spring容器内注入Bean的,在类上将这些注解标注出来之后,这些类在Spring启动时,会注册到Bean中。这四种的区别主要表示的是规范,没有实际使用上的区别。

  • @Component 通用注解,如果一个Bean不是在传统的MVC三层架构中的某一层时,可使用该注解 。
  • @Repository 表示Dao层的注解,用于数据库操作的Bean。
  • @Service 表示业务层,用于逻辑业务层的Bean。
  • @Controller 表示控制层,用于请求转发调用业务的Bean。

这里就会有人提到,貌似@Bean这个注解和这些注解的功能好像是一样的,都是向Spring容器中注册Bean。

2. @Component注解和@Bean注解的区别

区别一:注册的方式

@Component 是通过类路径扫描来自动装配到Spring容器中的,需要SpringBoot程序启用组件扫描并且包含了被注解的类时才有效,且不论该类中的方法能不能用到,都会在容器中进行管理。

@Bean 相对灵活,通常是在标有该注解的地方才开始定义产生Bean的逻辑,并且,注解可以直接加在方法上。

区别二:使用方式上

如果代码中引入了第三方的类库,想将这个类库交给Spring容器进行管理,此时无法在第三方类库的源码中使用@Component注解进行自动注册的,这时候可以使用@Bean注解把你需要的方法注册进容器中了。

3. @Autowired与@Resource

3.1 @Autowired

是用来自动装配对象的,我们在项目中通常这样使用:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper usermapper;

    public User get(String name){
        return usermapper.get(name)
    }
    
} 
@RestController
@RequestMapping("/user")
public class UserController{
    
    @Autowired
    private UserService userService;

    public void getUserByName(String name){
        User user = userService.get(name);
        System.out.println(user);
    }

}

这样是可以自动装配成功的,因为@Autowierd注解默认情况下是按照类型进行装配的,也就是byType的方式。

那么当有多个同类型的Bean时,@Autowired该如何抉择呢?

我们什么都不做的情况下,当有两个同类型Bean时,@Autowired注解所在的类启动时会报错

required a single bean,but 2 were found

此时我们需要配合其他注解一起使用:

3.2 @Qualifier和@Primary

@Qualifier配合@Autowired一起使用,当@Autowired发现超过1个以上的Bean时,通过@Qualifier中指定名称,进行byName的查找方式。

@RestController
@RequestMapping("/user")
public class UserController{
    
    @Qualifier("userServiceImpl")
    @Autowired
    private UserService userService;

    public void getUserByName(String name){
        User user = userService.get(name);
        System.out.println(user);
    }

}

@Primary则是加在注册的Bean上面,目的则是告诉@Autowired,当有2个同类型的Bean出现时,优先加载带@Primary注解的Bean。

@Primary
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper usermapper;

    public User get(String name){
        return usermapper.get(name)
    }
    
} 

如此,我们看一下@Autowired的装配顺序:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_17,color_FFFFFF,t_70,g_se,x_16

 接下来说一下@Resource注解的含义:

3.3 @Resource

注解默认寻找Bean的方式为byName,它的参数有7个,其中最主要的就是name和type,分成以下4中情况:

  • 不指定name,不指定type:按名称查找bean,查不到再按类型查找,找到了进行装配,没找到或找到多个抛出异常
  • 指定name,不指定type:查找与name唯一匹配的Bean,找到进行装配,没找到抛出异常。
  • 不指定name,指定type: 查找与type唯一匹配的bean,找到一个自动装配,没找到或找到多个抛出异常。
  • 指定name,指定type:找到name和type同时匹配的bean,找到自动装配,没找到抛出异常。

4. @Value和@ConfigurationProperties

@Value和@ConfigurationProperties的作用都是获取配置文件中的值,但是在某些方面他们也是有一点区别,我们先来看看如何使用:

这里我们有一个yaml格式的配置文件:

person:
    lastName: 张三
    age: 18

在类中引入配置文件的值:

@Component
@ConfigurationProperties(prefix = "person") //指定前缀
public class Person{
    private String lastName;
    private Integer age;
}
@Component
public class Person {

    @Value("${person.lastName}")
    private String lastName;

    @Value("${person.age}")
    private Integer age;
}

两者的区别:

区别内容@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个一个指定
松散绑定(驼峰命名)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持
  • 松散绑定:

@ConfigurationProperties
可以做到last-name 与 lastName的转换

@Value
必须一致

  • SpEL:

@ConfigurationProperties
在配置文件中的格式:person.age=#{11*2} //会报错


@Value("#{11*2}")
private Integer age;

  • JSR303数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    //会对lastName的数据合法性进行校验,验证是Eamil
    @Email
    private String lastName;
    }
    
//@Value 不支持

  • 复杂类型封装

@Value只能取出基本数据类型

5. @RequestParam,@RequestPart,@RequestBody

区别内容        @RequestParam@RequestPart@RequestBody
用于接收前端的ContentType类型

1.application/x-www-form-urlencoded ,

2.multipart/form-data

1.multipart/form-data

1.application/json

2.application/xml

适用于处理的参数类型name-valueJSON,XML,FILEJSON,XML

6. 持续更新中......

 

[全志T113]:ST7701 86屏幕驱动 阅读详情

相关推荐

【异常】解决JDK21升级中的SecurityException: JCE无法验证BC提供者问题

本文详细解析了JDK21升级中常见的SecurityException: JCE无法验证BC提供者问题的根源与解决方案。核心在于JDK21强化了JCE安全验证,导致签名不合规的老版本Bouncy Castle库被拒绝。文章提供了通过Maven依赖树精准定位、排除旧版本并引入兼容的bcprov-jdk18on新库的完整步骤,以及清理缓存等实战技巧,帮助开发者彻底解决此兼容性问题。

weixin_29197051的博客 488

分分享知识-快乐自己: @Component注解的使用

@controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层 @service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理 @repository(实现dao访问) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件@component (把普通pojo实例化到spring容器中,相当于配置文件中的 ) 泛...

andymmm0925的博客 462

新买的USB无线网卡插上没反应?保姆级排查指南:从设备管理器到网络列表

本文提供USB无线网卡无法识别的全流程排查手册,涵盖硬件检测、驱动管理和网络配置三大维度。重点解析设备管理器中的设备状态诊断和驱动解决方案,特别适用于Realtek芯片的无线网卡(如RTL8188GU、RTL8812BU等),帮助用户快速解决网卡插上无反应的问题。

weixin_29876033的博客 498

【SpringBoot】详细介绍Spring Boot中@Component

它是其他一些特定用途注解(如`@Service`、`@Repository`、`@Controller`等)的基础注解。`@Component`注解是Spring的核心注解之一,它提供了自动扫描和实例化bean的功能。总结来说,`@Component`注解是Spring中非常基础和常用的注解之一,用于将一个普通的Java类转化为Spring的组件,以便实现自动扫描和依赖注入的功能。将`@Component`注解和`@Autowired`注解一起使用可以实现依赖注入,即将一个组件实例注入到另一个组件中。

Jacker 8756

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

基于simulink的预测电流控制策略的三相逆变器仿真

本文详细介绍了在Simulink中实现基于预测电流控制策略的三相逆变器仿真方法。主要内容包括:准备工作(安装必要软件及工具箱)、构建三相逆变器基础模型、设计预测电流控制器(包含状态空间建模和控制器设计)、实现控制逻辑、添加示波器观察输出、配置仿真参数以及运行仿真分析结果。通过MATLAB代码示例和Simulink模块说明,展示了如何选择最优开关状态来最小化电流误差。该仿真方法为研究快速响应、高精度的逆变器控制提供了实用工具,但需注意实际应用中可能需要的调试工作。

amy_mhd的博客 272

spring boot 注解@Component

@Component。 Spring提供进一步典型的注解:@Component,@Service,和 @Controller。@Component是任何Spring托管组件的通用注解。 而@Repository,@Service和@Controller是@Component针对更特定用例的专业化(分别在持久性,服务和表示层)。因此可以用他们来注解你的组件类与@Component具有同样作用,通过与注解它们@Repository,@Service或者@Controller ,你能更好的区分数据,业务,控制层

yu15050186065的博客 3703

052、联发科Imagiq HyperEngine架构适配:天玑9000/9200的ISP多核并行调度与Tuning Toolkit调优案例

摘要: 项目组在适配联发科天玑9200的Imagiq 890 ISP架构时,遇到多摄预览功耗过高、帧率不稳等问题。通过分析多核调度机制,调整辅核QoS通道、优化AI-ISP协同模式(采用FREERUN+运动补偿),并利用Tuning Toolkit的Pipeline Viewer动态分配负载,最终降低功耗30mA、提升画质。关键经验包括:避免多核带宽冲突、合理配置动态时钟策略,以及统一校准参数版本管理。天玑9000/9200的HyperEngine架构需优先理解多核协同逻辑,再针对性调优,否则易引发场景兼容

zzfmlxs的博客 35

一文掌握SpringBoot注解之@Component 知识文集(1)

@Component 是 Spring 框架中的一个注解,在使用该注解时可以指定需要扫描的包路径,Spring 会自动扫描指定路径下的所有类,并将标有@Component及其派生注解(@Service等)的类自动注入到 Spring 容器中进行管理。使用注解可以避免手动进行 Bean 的注册操作,也可以提高代码的可维护性和可读性,减少冗余代码,方便进行组件解耦和重构。通常情况下,我们会将在上述示例代码中,使用注解来指定了要扫描的包路径,Spring 会自动扫描包及其子包下所有标记有@Component。

m0_50308467的博客 5588

【Yolo12改进策略】MRFA 小核协同,构建巨大的感受野,同时保持高斯型分布|即插即用|ICCV2025

本文将介绍如何将 UniConvNet 论文中的核心模块——感受野聚合器集成到 Yolo12中,通过一种新颖的“小核协同”范式,在不显著增加计算开销的前提下,显著提升模型的感受野质量和检测精度。在目标检测中,模型要识别一个物体,不仅需要看到物体的局部特征,更需要理解其周围的上下文信息。传统卷积网络通过堆叠小卷积核(如 3x3)来扩大“感受野”,但这个过程缓慢且效率低下。而近期流行的大核卷积,虽然感受野大,但会破坏“距离越近、影响越大”的自然分布,且带来巨大的计算负担。MRFA 找到了一条“中间道路”:它通过

m0_47867638的博客 928

假新闻检测论文分享(30)MMDFND: Multi-modal Multi-Domain Fake News Detection

现有的假新闻检测方法通常集中在单一领域的新闻上,如健康或政治。然而,社交媒体上的新闻往往来自多个领域,这给单一领域的假新闻检测方法带来了两个主要挑战:数据稀缺性:处理较小、单一领域的新闻数据集时,由于训练数据的稀缺,模型的有效性显著下降。跨领域检测的准确性下降:单一领域的假新闻检测方法在跨领域新闻数据集上的准确性大幅降低。缓解领域间模态语义偏差:通过DPLE网络提取跨领域和领域特定的知识,缓解了不同领域间文本和图像的语义差异。

weixin_41964296的博客 668

Spring Boot @Component注解介绍

是 Spring 中的一个核心注解,用于声明一个类为 Spring 管理的组件(Bean)。它是一个通用的注解,可以用于任何层次的类(如服务层、控制器层、持久层等)。这些注解的作用是标记类为 Spring 的 Bean,并且可以根据注解的类型提供额外的语义信息(例如,:当一个类不属于特定的层次(如服务层、控制器层等),但需要被 Spring 管理时,可以使用。你可以在其他组件中通过。:当需要将第三方库的类注册到 Spring 容器中时,可以使用。是一个通用注解,但在实际开发中,更推荐使用更具体的注解(如。

a876106354的博客 3147

20、Citrix 云桌面常见VDA注册问题汇总

本文总结了与 VDA 中出现的 VDA 会话断开连接、注册、会话卡住以及挂起/崩溃相关的主要支持文章。

我在Citrix、VMware、Veeam、微软和NVIDIA等领域拥有丰富经验的专业人士,专注于设计和维护虚拟化基础设施、实施备份与灾难恢复策略,致力于优化企业的IT环境。 942

Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)

在Spring Boot + MyBatis项目中,注解的使用极大地简化了配置和开发流程。通过合理运用各种注解,可以实现代码的高内聚低耦合,提升项目的可维护性和扩展性。本文按照功能对Spring Boot和MyBatis中的常用注解进行了分类讲解,并通过一个综合示例展示了它们的实际应用。希望能帮助开发者在实际项目中更好地理解和运用这些注解,构建高效、稳定的应用系统。

2301_79858914的博客 3065

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

@aspect注解类不生效_Spring Boot从入门到精通(三)常用注解含义及用法分析总结...

Spring Boot是目前非常流行的框架,而注解是Spring Boot的核心功能,接下来主要说一说Spring Boot常用注解的含义以及部分注解在项目中的使用方法。@RestController和@RequestMapping@RestController被称为一个构造型(stereotype)注解。它为阅读代码的开发人员提供建议。对于Spring来说,该类扮演了一个特殊角色。它继承自@Co...

weixin_39673303的博客 370

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot(20)自定义注解

SpringBoot(20)自定义注解

weixin_38380811的博客 622

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot学习笔记——SpringBoot注解

1. SpringBoot jar包 1.1 父类pom.xml引入springboot jar包的打包插件: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>

待起飞的程序猿的博客 369

常用注解集合

Springboot常用注解 @Controller、@Repository、@Service、@Component @Controller:控制层使用 @Service:service层使用 @Repository:dao层使用 @Component:组件 这四个注解效果都是一样的,标识这个类成为了一个IOC容器中的Bean工厂,使用这些注解后就不需要再去springmvc中手动配置bean文件 @ResponseBody 加了这个注解之后控制器返回的字符串则就只是普通的字符串,不会再进行页面跳转了 @R

Josen_l的博客 340

必须要知道的Springboot注解

冬日的暖阳照进窗户,一杯咖啡 ☕️ ,带着好心情我们一起写程序,写一个所有程序员都逃不掉的模块 – 用户登录。 Springboot 实战 - 用户登录 用户登录看起来是一个简单的功能,但初学不知道从哪里入手。实际项目中要考虑的事情还要多一些。我们不妨把这些都覆盖到,将这个任务分成几个阶段讲细讲透,并一一实现。 阶段目标 今天的目标从最基础的环境搭建开始,直到程序运行起来,看见登录页面。 具体步骤包括: 搭建开发环境 使用Springboot创建项目 写登录页面,并运行程序 搭建开发环境 + 开发环境

qq_38937669的博客 287

菜鸟的springboot常用注解总结

菜鸟的springboot常用注解总结说明@SpringBootApplication@Component,@Service,@Controller,@Repository@ResponseBody@RestController@AutoWired 说明 更新时间:2020/7/14 17:32,更新了整体内容 本文主要对网上的springboot常见注解和自己本人在学习的过程中遇到的注解的一次总结,本文会持续更新,不断地扩充 本文仅为记录学习轨迹,如有侵权,联系删除 @SpringBootApplicat

最强菜鸟 7万+

Springboot常用注解大全

springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据访问层bean@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写@Autowired:按类型注入.默认属性required= true;当不能确定 Sprin...

yitian_66的博客 7万+

SpringBoot 常用注解汇总

目录Spring Boot 常用注解汇总一、启动注解 @SpringBootApplication@SpringBootConfiguration 注解,继承@Configuration注解,主要用于加载配置文件@EnableAutoConfiguration 注解,开启自动配置功能@ComponentScan 注解,主要用于组件扫描和自动装配二、Controller 相关注解@Controller@RestController 复合注解@RequestBody@RequestMapping@GetMapp

m0_67401153的博客 5万+

springboot常用注解总结

文章目录一、@SpringBootApplication二、@Service、@Controller、@Repository、@Component三、@ResponseBody、@RestController四、@AutoWired五、@RequestMapping、@GetMapping、@PostMapping六、@Configuration、@Bean七、@RequestParam、@RequestBody 一、@SpringBootApplication @SpringBootApplicatio

LXZ_1024的博客 1万+

SpringBoot常用注解及其应用

SpringBoot常用注解及其应用 常用SpingBoot注解列表如下: 注解名称 作用 备注 @Configuration 从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

Timothy的博客 1754

springboot中的常用注解

springboot中的常用注解 个人觉得springboor中常用的注解主要可以分为三种:放入容器型注解、从容器中取出型注解和功能型注解。其中的放入容器型和从容器中取出型就是我们平时所说的控制反转和依赖注入的概念(个人版本- - - 可以看一看,别太当真 0.0) 放入容器型注解 简介:个人觉得就是申明一个实例对象,然后将这个对象交给spring管理。 1、@Component:放在类上...

一只仰望天空的菜鸟 1万+

SpringBoot常用注解

1、@SpringBootApplication 包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上; 2、@Component、@Service、@Controller、@Repository 这几个注解放在一起是因为功能基本一样的,都是将类注入到spring容器中,只不过它们使用的场景不同,被@Component,@Service,@Controller,@Repository注解标注的类,这些类会被纳入进spring容器中

jike11231的博客 1万+
上一篇: 【Linux】linux下常用命令整合
下一篇: 【Docker】docker管理工具Portainer的使用
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值