菜鸟的springboot常用注解总结

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

说明

更新时间:2020/8/12 22:14,更新了@RequestParam等注解
更新时间:2020/8/6 18:00,更新了@AutoWired等注解
更新时间:2020/8/2 17:32,更新了@SpringBootApplication等注解




本文主要对网上的springboot常见注解和自己本人在学习的过程中遇到的注解的一次总结,本文会持续更新,不断地扩充

本文仅为记录学习轨迹,如有侵权,联系删除

@SpringBootApplication

相关注解 说明
@ComponentScan 用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类
@SpringBootConfiguration 与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类
@EnableAutoConfiguration 是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中

@Component、@Service、@Controller、@Repository

这几个注解放在一起是因为功能基本一样的,都是将类注入到spring容器中,只不过它们使用的场景不同,被@Component,@Service,@Controller,@Repository注解标注的类,这些类会被纳入进spring容器中管理。

注解 说明
@Repository 持久层(dao)注入spring容器
@Service 业务逻辑层(server)注入spring容器
@Controller 控制层(controller)注入spring容器
@Component 普通pojo注入spring容器

@ResponseBody

@ResponseBody可以作用在方法上或类上,表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,即不会经过视图解析器,返回什么数据即在页面输入什么数据。

注解 说明
@ResponseBody @ResponseBody的作用其实是将java对象转为json格式的数据。

@RestController

该注解是@Controller和@ResponseBody的结合体,一般用于类,作用等于在类上面添加了@ResponseBody和@Controller

@AutoWired、@Qualifier、@Resource

这3个注解都是基于注解方式进行自动装配,在容器里面将查找到的bean返回,一般@AutoWired用得最多,@Qualifier则需要配合@AutoWired使用,@Resource则是可以通过名字进行自动装配

注解 说明
@AutoWired @Autowired默认按类型装配,如果发现找到多个bean,则按照name方式比对,如果还有多个,则报出异常
@Qualifier spring的注解,按名字注入 一般当出现两个及以上bean时,不知道要注入哪个,结合@AutoWired使用
@Resource 默认按名称注入例如@Resource(name = “zhaozhao”)则根据name属性注入找不到则报错,若无name属性则根据属性名称注入,如果匹配不成功则按照类型匹配匹配不成功则报错。

@AutoWired
在这里插入图片描述
@Qualifier
当有一个接口的多个实现类时,只用@AutoWired会报错,因为它有多个接口的实现类,不知道你要找哪一个,这个时候就需要在注入bean的时候起个名字,然后用@Qualifier注解指定哪一个bean(按照名字注入与装配)
在这里插入图片描述
@Resource
该注解的使用相当于@AutoWired和@Qualifier配合使用的效果
在这里插入图片描述














@RequestMapping、@GetMapping、@PostMapping

这3个注解功能也是类似的,通过这3个注解来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,用在方法上,可以通过配置的url进行访问

注解 说明
@RequestMapping @RequestMapping(url),通过该注解就可以通过配置的url进行访问,方式可以是get或post请求,两种方式均可
@GetMapping @GetMapping(url) ,功能类似的,只是这个限定了只能是Get请求
@PostMapping @PostMapping(url),功能类似的,只是这个限定了只能是Post请求

@RequestMapping
发起get请求或者post请求都可以
在这里插入图片描述




@GetMapping
只能用get请求
在这里插入图片描述




@PostMapping
只能发起post请求
在这里插入图片描述




@Value、@ConfigurationProperties、@PropertySource

注解 说明
@Value 用于获取bean的属性,一般用于读取配置文件的数据,作用在变量上
@ConfigurationProperties 用于注入Bean属性,然后再通过当前Bean获取注入值,作用在类上
@PropertySource 用于指定要读取的配置文件,可以和@Value或@ConfigurationProperties配合使用

注意:@PropertySource不支持yml文件读取。

@Value
这里用yml配置文件进行演示,propres配置文件也是同样的效果,在application.yml配置文件里设置开发环境的的配置文件(dev),这样用@Value获取到的就是开发环境的配置文件的数据,切换成生产环境(pro)则获取到的是生产环境的数据
在这里插入图片描述
在这里插入图片描述
@ConfigurationProperties
该注解可以直接注入整个类的数据,作用于类










@PropertySource

注意:@PropertySource不支持yml文件读取。
配置文件如下:people.properties
在这里插入图片描述
测试
在这里插入图片描述
当然@PropertySource还可以和@Value配合使用,即一个一个注入值。










@Configuration、@Bean

@Configuration作用于类上面,表明这是一个配置类,@Bean产生一个Bean对象加入Spring IOC容器

注意:@Configuration标注在类上,相当于把该类作为spring的xml配置文件中,作用为:配置spring容器(应用上下文)

注解 说明
@Configuration 作用于类上表示这是一个配置类,可理解为用spring的时候xml里面的< beans>标签
@Bean 产生bean对象加入容器,作用于方法,可理解为用spring的时候xml里面的标签

一般这两个注解同时配合使用

@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue

这3个注解放在一起主要是经常在控制层用来接收参数的

注解 说明
@RequestParam 获取查询参数。即url?name=这种形式
@PathVariable 获取路径参数。即url/{id}这种形式。
@RequestParam 获取Body的参数,一般用于post获取参数
@RequestHeader 获取请求头的信息
@CookieValue 获取Cookie的信息

@RequestParam
@RequestParam主要用于接收url?后面的参数,get或post请求,只要后面的url?有参数都可以获取到对应的参数

@RequestParam注解有几个比较重要的属性,required 表示是否必须,默认为 true,必须。defaultValue 可设置请求参数的默认值。value 为接收url的参数名(相当于key值)。

示例代码如下

 @GetMapping("/requestParam") @ResponseBody public Map<String, String> requestParam( UserDto userDto,//通过一个实体类来接收,字段名必须一致 @RequestParam(value = "id", required = false) String userId, @RequestParam(value = "name", required = false) String userName, @RequestParam(value = "pageIndex", required = true, defaultValue = "1") String pageIndex, @RequestParam(value = "pageSize", required = true, defaultValue = "5") String pageSize) { 
    Map<String, String> map = new HashMap<>(); map.put("userDto",userDto.toString()); map.put("id", userId); map.put("name", userName); map.put("pageIndex", pageIndex); map.put("pageSize", pageSize); return map; } 

@PathVariable
该注解主要用于获取路径参数,像url/{id}/{name}这种形式的参数都可以,get获取post请求均可

示例代码如下:

 @PostMapping("/pathVariable/{id}/{name}") @ResponseBody public Map<String, String> pathVariable( @PathVariable(name = "id") String userId, @PathVariable(name = "name") String userName) { 
    Map<String, String> map = new HashMap<>(); map.put("id", userId); map.put("name", userName); return map; } 

运行结果

在这里插入图片描述

@RequestBody
该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求

示例代码如下:

 @PostMapping("/test01") @ResponseBody public UserDto test01(@RequestBody UserDto userDto) { 
    return userDto; } @PostMapping("/test02") @ResponseBody public String test02(@RequestBody String str) { 
    return str; } 

注意,如果要传多个参数过去只能将其封装成一个类,如果是出现了多个@RequestBody注解访问的时候会报400错误,例如下面这种代码就是错误的

 @PostMapping("/requestBody") @ResponseBody public Map<String,String> requestBody( @RequestBody(required = true) String id, @RequestBody(required = true) String name, @RequestBody(required = false) String sex, @RequestBody(required = false) String age ){ 
    Map<String,String> map = new HashMap<>(); map.put("id","id"); map.put("name","name"); return map; } 

@RequestHeader
示例代码如下

 @PostMapping("/requestHeader") @ResponseBody public String requestBody03(@RequestHeader(name = "Content-Type") String contentType){ 
    return contentType; } 

@CookieValue
由于postman模拟cookie本人不会弄,只能用别人的代码

@GetMapping("/demo3") public void demo3(@RequestHeader(name = "myHeader") String myHeader, @CookieValue(name = "myCookie") String myCookie) { 
    System.out.println("myHeader=" + myHeader); System.out.println("myCookie=" + myCookie); } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199263.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午1:30
下一篇 2026年3月26日 下午1:30


相关推荐

  • Java中什么方法导致线程阻塞

    Java中什么方法导致线程阻塞一 为什么引入线程阻塞机制 为了解决对共享存储区的访问冲突 Java 引入了同步机制 现在让我们来考察多个线程对共享资源的访问 显然同步机制已经不够了 因为在任意时刻所要求的资源不一定已经准备好了被访问 反过来 同一时刻准备好了的资源也可能不止一个 为了解决这种情况下的访问控制问题 Java 引入了对阻塞机制的支持 阻塞指的是暂停一个线程的执行以等待某个条件发生 如某资源就绪 学过操作系

    2026年3月17日
    2
  • 图解LVS的工作原理「建议收藏」

    图解LVS的工作原理「建议收藏」目录LVS介绍LVS简介LVS特点:LVS内核工作模型LVS常见术语LVS模式介绍NAT模式DR模式其他模式LVS调度算法介绍LVS的部署NAT模式的实现DR模式的实现调度器配置WEB后端服务器配置实验测试LVS介绍LVS简介LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个…

    2022年7月24日
    10
  • Java大数据学习01–大数据的本质及学习顺序介绍

    Java大数据学习01–大数据的本质及学习顺序介绍随着互联网的使用人数越来越多,产生的数据也越来越多。根据数据我们可以分析出很多有用的信息。这也就是当前为什么大数据这么火的行为。学习大数据有很多种方式,但我们学习的载体是以目前最普遍,最流行的Java语言来进行学习。下面我们进入正题:1、首先是大数据的本质:大数据的本质无非两条:大数据的存储(Hadoop)和大数据的计算(Spark)存储:由于数据量巨大,把所有数据存在一个机器…

    2022年5月28日
    39
  • 2021.4.14永久激活码_通用破解码

    2021.4.14永久激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    1.4K
  • jenkins allure_allure的用法

    jenkins allure_allure的用法前言jenkins集成了allure插件,安装插件后运行pytest+allure的脚本即可在jenkins上查看allure报告了。allure安装在运行代码的服务器本机,我这里是用的dock

    2022年7月29日
    19
  • SVN服务器创建及使用–以文档文件的管理示例

    SVN服务器创建及使用–以文档文件的管理示例来源:http://blog.csdn.net/kupe87826/article/details/8139908参考:http://baike.baidu.com/view/183128.htmhttp://wenku.baidu.com/view/ed3e3435ee06eff9aef807ff.html

    2022年7月19日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号