springboot常用注解详解

2023-11-17

在springboot中,经常会用到一些注解,它们各自代表着什么呢?在这个属于我们的节日里,快来了解一下吧! 

1、@SpringBootApplication

     一般不会主动去使用它,但是要知道它是一个组合注解,@Configuration  、@EnableAutoConfiguration 、@ComponentScan  注解的集合。

2、@Configuration 

      这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。用@Configuration注释类表明是一个配置类,允许在 Spring 上下文中注册额外的 bean 或导入其他配置类。

3、@EnableAutoConfiguration

      该注解就是用来开启自动配置的,一般情况下也是需要去配置的,后续会更新。

4、@ComponentScan

      @ComponentScan用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。会被自动装配的注解包括@Controller、 @Service、@Component、@Repository等等。其作用等同于<context:component-scan base-package="com.xxx.xxx" />配置。这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。

这几个注解一般会在启动类里边配置,如下图。

5、@Autowired、@Qualifier

  • @Autowired注解作用在构造函数、方法、方法参数、类字段以及注解上
  • @Autowired注解可以实现Bean的自动注入

当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。

6、@Component,@Respository,@Service,@Controller

@Component :通用注解,可标注任意类为 Spring组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。
7、@RequestMapping

用于类或方法上,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径,也可以用来处理请求地址映射的注解。

属性释义:

value:     指定请求的实际地址;
method:  指定请求的method类型, GET、POST、PUT、DELETE等;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
8、@ResponseBody

@ResponseBody注解既可以在方法上使用,也可以在类上使用,在类上使用表明该类中所有方法均返回JSON数据,也可以与@Controller注解合并为@RestController。它的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

9、@GetMapping @PutMapping @PostMapping @DeleteMapping

也就是对应HTTP的请求方式,

GET :请求从服务器获取特定资源。举个例子:GET  /users(获取所有学生:查询)
POST :在服务器上创建一个新的资源。举个例子:POST       /users(创建学生:新增)
PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生:更新/编辑)
DELETE :从服务器删除特定的资源。举个例子:DELETE      /users/12(删除编号为 12 的学生:删除)
以@DeleteMapping为例子来看一下

@DeleteMapping("/users/{userId}")等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)

10、@PathVariable

@PathVariable是用来获取路径参数的。

11、@RequestParam

用来获取查询参数。

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)

value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值。

12、@RequestBody

不要和@ResponseBody混淆了,@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),Content-Type 为 application/json 格式;GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

比如前端以post方式传json字符串,此时后端就可以使用@RequestBody来接收

13、@DateTimeFormat、@JsonFormat

实体类User有个Date类型的属性birthday,然后用该实体类接收从前端传来的参数,我们会发现报了400异常。因为前端传去的是字符串类型,而实体类中是Date类型,那么此时就可以使用@DateTimeFormat,但是格式不对,所以需要用到@JsonFormattimezone:是时间设置为东八区,避免时间在转换中有误差。

简而言之,@DateTimeFormat是前台到后台的时间转换,而@JsonFormat是后台到前台的转换。

14、@Import

这是 Spring 3.0 添加的新注解,用来导入一个或者多个 @Configuration 注解修饰的类,这在 Spring Boot 里面应用很多。@Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中,用法如下:

@Import({ 类名.class , 类名.class... })

15、@Entity实体类注解

@Table(name =“数据库表名”),这个注解也注释在实体类上,对应数据库中相应的表。
@Id、@Column注解用于标注实体类中的字段,pk字段标注为@Id,其余@Column。

16、事务注解 @Transactional
Spring中,编程式事务管理和声明式事务管理两种方式可实现事务。

编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
声明式事务管理: 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过@Transactional就可以进行事务操作,更快捷而且简单,推荐使用。

17、@ControllerAdvice 统一处理异常

@ControllerAdvice 注解定义全局异常处理类。

@ControllerAdvice
public class followExceptionHandler {
}

18、@ExceptionHandler 注解声明异常处理方法

@ControllerAdvice
public class followExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    String handleException(){
        return "Exception full!";
    }
}

 19、@ImportResource

这是 Spring 3.0 添加的新注解,用来导入一个或者多个 Spring 配置文件,这对 Spring Boot 兼容老项目非常有用,因为有些配置无法通过 Java Config 的形式来配置就只能用这个注解来导入。

20、@PropertySource 

导入properties文件

21、PropertySources

@PropertySource 的集合

22、@Scope

指定bean的作用域,默认singleton,其它包括prototype、request、session、globalSession

23、@Lazy

使bean懒加载,取消bean预初始化。

24、@Primary

自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否者将抛出异常。

25、@SpringBootConfiguration

这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展。

这些就是springboot中常用的一些注解啦,希望能够对大家有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot常用注解详解 的相关文章

随机推荐

  • openwrt上opkg更新报错"opkg_download: Failed to download ............."

    开始搞op的时候 看到op竟然可以直接安装一些插件 激动坏了 因为这东西对嵌入式的小系统来说简直不敢想 但是op就支持了 就是这么任性 好不容易编译了固件 按照网上的教程 telnet进去 首先opkg update 结果没有想象中的华丽更
  • 聚类算法(二)--层次聚类法

    本文主要介绍层次聚类法的基本原理 距离计算方法 算法的优缺点 以及R语言实战 一 概述 层次聚类 Hierarchical Clustering 试图在不同层次上对数据集进行划分 从而形成树形的聚类结构 数据集的划分可采用 自底向上 的聚合
  • CUDA编程学习0——环境搭建&环境详解

    目录 环境配置 软件安装 1 支持最高的cuda版本查询 下载cuda开发软件 3 配置环境 bashrc添加环境变量 4 后续维护查询 补 关于windows下的cuda环境配置 一 Visual Studio 2022 CUDA 11
  • java,html5+css3以及javascript面试题------自己面试的时候遇到的面试题,所以整理一下

    1 java部分 1 线程与进程的区别 一个程序至少有一个进程 一个进程至少有一个线程 线程的划分尺度小于进程 使得多线程程序的并发性高 另外 进程在执行过程中拥有独立的内存单元 而多个线程共享内存 从而极大地提高了程序的运行效率 线程在执
  • matlab 计算结果为nan,matlab 计算 结果总是为Nan

    本人刚刚接触matlab 对这些运算不是很懂 计算ni的位置 exp E g 2 k T eps 这个值之前一直是0 加了eps后就有结果显示了 后面部分exp alfa T 2 k T beita 一直为无穷大然后结果就为Nan 不知道怎
  • UIKeyboard键盘相关知识点-IOS开发

    一 键盘风格 UIKit框架支持8种风格键盘 java view plain copy print typedef enum UIKeyboardTypeDefault 默认键盘 支持所有字符 UIKeyboardTypeASCIICapa
  • 08.animation-----05.旋转

    1 旋转是将元素沿着x y z轴以指定的角度旋转 旋转方向为顺时针 单位可以为deg也可为turn 2 旋转也是使用transform标签 使用以下函数 rotatex 使元素沿着x轴旋转 rotatey 使元素沿着y轴旋转 rotatez
  • 微信小程序-天气预报案例之和风天气API-云开发版

    小程序 天气预报 在现实生活中是非常常用的 我们平时都可以通过自己的手机上面或网上进行查看天气等等 鉴于有些小伙伴对云开发不熟悉 学习请移步到我的另外一篇文章 天气预报之和风天气 简易版 这个demo可以应用到自己的小程序模块上 前期准备
  • 面试华为软件测试岗,收到offer后我却毫不犹豫拒绝了....

    我大学学的是计算机专业 毕业的时候 对于找工作比较迷茫 也不知道当时怎么想的 一头就扎进了一家外包公司 一干就是2年 我想说的是 但凡有点机会 千万别去外包 在深思熟虑过后 决定要提升自己 也发现自己身边的人都是在大厂上班 也听他们说了大厂
  • 第十章 os.path模块

    1 os path模块介绍 os 模块是Python 内置的与操作系统功能和文件系统相关的模块 该模块的子模块os path 是专门用于进行路径操作的模块 常用的路径操作主要有判断目录是否存在 创建目录 删除目录和遍历目录等 说明 在使用o
  • 腾讯视频url获取方法

    总公式 url fn vkey 第一步 复制视频地址 步骤如下 点击复制通用页面地址 第二布 http vv video qq com getinfo vid m00253deqqo platform 101001 charge 0 oty
  • [激光原理与应用-34]:《光电检测技术-1》- 光学测量基础 - 光电检测、光学测量、作用、应用、发展趋势

    目录 第1章 光学测量概述 1 1 什么是光学检测 1 2 光学检测的重要作用 1 3 计量 1 4 测量 1 5 光学测量的特点与优点 第2章 光的测量范围与相应技术手段 2 1 光的辐射度量与光度量的测量 2 2 非光物理量的光学测量
  • PAT Basic Level 1075 链表元素分类(静态链表)

    题目链接 点击查看 题目描述 给定一个单链表 请编写程序将链表元素进行分类排列 使得所有负值元素都排在非负值元素的前面 而 0 K 区间内的元素都排在大于 K 的元素前面 但每一类内部元素的顺序是不能改变的 例如 给定链表为 18 7 4
  • 机器学习岗位面试问题汇总 之 深度学习

    自己结合网络内容总结 欢迎指正欢迎补充 最新更新 20170624 版本2 增加22 28 1 模式识别 机器学习 深度学习的区别与联系 模式识别 过去 程序 机器做智能的事 决策树等 机器学习 热点领域 给数据 学习数据 深度学习 前言领
  • C++类声明和成员函数定义

    C 类声明和成员函数定义的分离 在C 中 一般做法是将类的声明放在指定的头文件中 程序员如果想用该类 只要把有关的头文件包含进来即可 不必在程序中重复书写类的声明 以减少工 作量 提高编程的效率 由于在头文件中包含了类的声明 因此在程序中就
  • SAP BAPI_ACC_DOCUMENT_POST记账码问题

    今天遇见一个问题 使用BAPI ACC DOCUMENT POST过账 或BAPI ACC DOCUMENT CHECK检查数据 时 报错 借 贷标记不一致 刚开始以为是数据的问题 调试后发现数据的借贷平衡 金额也没有问题 联想到记账码是通
  • 互联网“香饽饽”?数据挖掘或成热门行业

    何为 数据挖掘 信息化社会的高速发展下 大数据 云计算 物联网等技术应运而生 海量的数据资源逐渐在人们的生产生活中高速地产生 积累 带动全社会迈入了大数据时代 这些代表信息的数据就好像大海 而要在广阔的大海里面找到想要的某一条信息或知识 也
  • Sqlserver2019对应驱动版本+完美解决sqlserver驱动版本问题

    我使用的是Sqlserver2019 mssql jdbc 7 4 1 jre8 jdk1 8 有时候不知道自己电脑上sqlserver对应的驱动版本 可以在idea中查看 idea会自动查找对应驱动版本的 首先 打开IDEA 点开右面的D
  • maven配置华为云镜像

    第一步 在maven的目录中找到配置文件 D softwaretools apache maven 3 5 4 conf settings xml 第二步 配置华为云服务器 在server标签下粘贴
  • springboot常用注解详解

    在springboot中 经常会用到一些注解 它们各自代表着什么呢 在这个属于我们的节日里 快来了解一下吧 1 SpringBootApplication 一般不会主动去使用它 但是要知道它是一个组合注解 Configuration Ena