SpringBoot注解详解,建议收藏!

一、简介

基于 SpringBoot 平台开发的项目数不胜数,与常规的基于Spring开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速开发,而且非常简单,基本可以做到开箱即用!

那 SpringBoot 为开发者提供了多少注解呢?我们该如何使用?

针对此问题,小编特意对其进行了一番整理,内容如下,个人感觉还是比较清晰的,今天我们就一起来整一整每个注解的含义和用法,以免踩坑!

二、注解总结

2.1. SpringMVC 相关注解

  • @Controller

通常用于修饰controller层的组件,由控制器负责将用户发来的URL请求转发到对应的服务接口,通常还需要配合注解@RequestMapping使用。

  • @RequestMapping

提供路由信息,负责URL到Controller中具体函数的映射,当用于方法上时,可以指定请求协议,比如GET、POST、PUT、DELETE等等。

  • @RequestBody

表示请求体的Content-Type必须为application/json格式的数据,接收到数据之后会自动将数据绑定到Java对象上去

  • @ResponseBody

表示该方法的返回结果直接写入HTTP response body中,返回数据的格式为application/json。

比如,请求参数为json格式,返回参数也为json格式,示例代码如下:

复制

/*** 登录服务*/
@Controller
@RequestMapping("api")
public class LoginController {/*** 登录请求,post请求协议,请求参数数据格式为json* @param request*/@RequestMapping(value = "login", method = RequestMethod.POST)@ResponseBodypublic ResponseEntity login(@RequestBody UserLoginDTO request){//...业务处理return new ResponseEntity(HttpStatus.OK);}
}
  • @RestController

和@Controller一样,用于标注控制层组件,不同的地方在于:它是@ResponseBody和@Controller的合集,也就是说,在当@RestController用在类上时,表示当前类里面所有对外暴露的接口方法,返回数据的格式都为application/json,示范代码如下:

复制

@RestController
@RequestMapping("api")
public class LoginController {/*** 登录请求,post请求协议,请求参数数据格式为json* @param request*/@RequestMapping(value = "login", method = RequestMethod.POST)public ResponseEntity login(@RequestBody UserLoginDTO request){//...业务处理return new ResponseEntity(HttpStatus.OK);}
}
  • @RequestParam

用于接收请求参数为表单类型的数据,通常用在方法的参数前面,示范代码如下:

复制

/*** 登录请求,post请求协议,请求参数数据格式为表单*/
@RequestMapping(value = "login", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity login(@RequestParam(value = "userName",required = true) String userName,@RequestParam(value = "userPwd",required = true) String userPwd){//...业务处理return new ResponseEntity(HttpStatus.OK);
}
  • @PathVariable

用于获取请求路径中的参数,通常用于restful风格的api上,示范代码如下:

复制

/*** restful风格的参数请求* @param id*/
@RequestMapping(value = "queryProduct/{id}", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity queryProduct(@PathVariable("id") String id){//...业务处理return new ResponseEntity(HttpStatus.OK);
}
  • @GetMapping

除了@RequestMapping可以指定请求方式之外,还有一些其他的注解,可以用于标注接口路径请求,比如GetMapping用在方法上时,表示只支持get请求方法,等价于@RequestMapping(value="/get",method=RequestMethod.GET)。

复制

@GetMapping("get")
public ResponseEntity get(){return new ResponseEntity(HttpStatus.OK);
}
  • @PostMapping

用在方法上,表示只支持post方式的请求。

复制

@PostMapping("post")
public ResponseEntity post(){return new ResponseEntity(HttpStatus.OK);
}
  • @PutMapping

用在方法上,表示只支持put方式的请求,通常表示更新某些资源的意思。

复制

@PutMapping("put")
public ResponseEntity put(){return new ResponseEntity(HttpStatus.OK);
}
  • @DeleteMapping

用在方法上,表示只支持delete方式的请求,通常表示删除某些资源的意思。

复制

@DeleteMapping("delete")
public ResponseEntity delete(){return new ResponseEntity(HttpStatus.OK);
}

2.2. bean 相关注解

  • @Service

通常用于修饰service层的组件,声明一个对象,会将类对象实例化并注入到bean容器里面。

复制

@Service
public class DeptService {//具体的方法
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • @Component

泛指组件,当组件不好归类的时候,可以使用这个注解进行标注,功能类似于于@Service。

复制

@Component
public class DeptService {//具体的方法
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • @Repository

通常用于修饰dao层的组件,@Repository注解属于Spring里面最先引入的一批注解,它用于将数据访问层 (DAO层 ) 的类标识为Spring Bean,具体只需将该注解标注在 DAO类上即可,示例代码如下:

复制

@Repository
public interface RoleRepository extends JpaRepository<Role,Long> {//具体的方法
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

为什么现在使用的很少呢?

主要是因为当我们配置服务启动自动扫描dao层包时,Spring会自动帮我们创建一个实现类,然后注入到bean容器里面。当某些类无法被扫描到时,我们可以显式的在数据持久类上标注@Repository注解,Spring会自动帮我们声明对象。

  • @Bean

相当于 xml 中配置 Bean,意思是产生一个 bean 对象,并交给spring管理,示例代码如下:

复制

@Configuration
public class AppConfig {//相当于 xml 中配置 Bean@Beanpublic Uploader initFileUploader() {return new FileUploader();}}
  • @Autowired

自动导入依赖的bean对象,默认时按照byType方式导入对象,而且导入的对象必须存在,当需要导入的对象并不存在时,我们可以通过配置required = false来关闭强制验证。

复制

@Autowired
private DeptService deptService;
  • @Resource

也是自动导入依赖的bean对象,由JDK提供,默认是按照byName方式导入依赖的对象;而@Autowired默认时按照byType方式导入对象,当然@Resource还可以配置成通过byType方式导入对象。

复制

/*** 通过名称导入(默认通过名称导入依赖对象)*/
@Resource(name = "deptService")
private DeptService deptService;/*** 通过类型导入*/
@Resource(type = RoleRepository.class)
private DeptService deptService;
  • @Qualifier

当有多个同一类型的bean时,使用@Autowired导入会报错,提示当前对象并不是唯一,Spring不知道导入哪个依赖,这个时候,我们可以使用@Qualifier进行更细粒度的控制,选择其中一个候选者,一般于@Autowired搭配使用,示例如下:

复制

@Autowired
@Qualifier("deptService")
private DeptService deptService;
  • @Scope

用于生命一个spring bean的作用域,作用的范围一共有以下几种:

  • singleton:唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype:每次请求都会创建一个新的 bean 实例,对象多例。
  • request:每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
  • session:每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。

复制

/*** 单例对象*/
@RestController
@Scope("singleton")
public class HelloController {}

2.3. JPA 相关注解

  • @Entity和@Table

表明这是一个实体类,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略。

  • @Id

表示该属性字段对应数据库表中的主键字段。

  • @Column

表示该属性字段对应的数据库表中的列名,如果字段名与列名相同,则可以省略。

  • @GeneratedValue

表示主键的生成策略,有四个选项,分别如下:

  • AUTO:表示由程序控制,是默认选项 ,不设置就是这个
  • IDENTITY:表示由数据库生成,采用数据库自增长,Oracle 不支持这种方式
  • SEQUENCE:表示通过数据库的序列生成主键ID,MYSQL 不支持
  • Table:表示由特定的数据库产生主键,该方式有利于数据库的移植
  • @SequenceGeneretor

SpringBoot注解详解,建议收藏!-springboot的核心注解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350663.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙手机华为meta 30 第一次链接电脑下载驱动

第一步下载 华为手机助手HiSuite官方下载 | 华为官网 usb连接电脑后要手机要开启 USB调试模式&#xff0c;具体开启方式点击手机设置-》关于手机-》快速点击五次HarmonyOs版本 然后就进入了开发者模式 &#xff0c;点击返回-》系统和更新-》开发人员选项-》开启并开启usb调试 …

海尔计算机显卡驱动,海尔t621显卡驱动(最新更新)海尔t68d显卡驱动

软件大小&#xff1a; 26.5 M 热门等级&#xff1a; 更新时间&#xff1a; 2009-06-19 联 系 人&#xff1a; tools mydrivers.com 下载次数&#xff1a; 4091740 开 发 商&#xff1a; 驱动之家 界面预览&#xff1a; 软件类别&#xff1a; 国产软件 / 系统备份 软件语言&…

华为手机linux驱动下载,华为手机驱动官方版

华为手机驱动官方版是华为智能手机USB的官方最新驱动程序&#xff0c;华为手机usb驱动程序解决手机用USB数据线与计算机连接&#xff0c;却无法读取手机文件的问题。华为手机驱动官方版支持32位和64位的WinXP、Vista、Win7操作系统使用。 相关软件 版本说明 下载地址 Android手…

计算机设备驱动程序的安装与更新,电脑系统驱动如何安装更新?

电脑平时出现问题比较多的一个是系统问题,一个是硬件问题!这两个问题都会跟电脑驱动打交道!如果说驱动出现问题就会引起电脑蓝屏、卡屏、拖尾等现象,就需要重装驱动程序,电脑驱动的安装也不是简单的安装一下就行的,那么如何安装更新驱动呢?很多小白朋友一问三不知,不过…

浪潮服务器系统驱动,浪潮英信服务器驱动(最新更新)浪潮网卡驱动

软件大小&#xff1a; 26.5 M 热门等级&#xff1a; 更新时间&#xff1a; 2009-06-19 联 系 人&#xff1a; tools mydrivers.com 下载次数&#xff1a; 4091740 开 发 商&#xff1a; 驱动之家 界面预览&#xff1a; 查看 软件类别&#xff1a; 国产软件 / 系统备份 软件语言…

原驱动天空_万能驱动助理 v5.29 全系列正式版 [2013元旦贺岁版]

一、软件简介 【万能驱动助理】概述&#xff1a;万能驱动助理&#xff08;可简称为 WanDrv&#xff0c;原&#xff1a;e驱动&#xff09; IT天空出品的一款根据硬件ID&#xff08;HWID&#xff09;来智能识别电脑硬件并且自动安装驱动程序的工具&#xff0c;它拥有简约且友好的…

usb万能驱动win7_win 10 重装 win 7 系统

分享一些自己重装系统的过程及经验。文章解释性文字较多&#xff0c;砍柴不忘磨刀功。 重装系统之前务必备份数据&#xff0c;数据无价。 备份数据&#xff01;&#xff01;&#xff01; 由于 win7 原版镜像没有 usb3.0 驱动&#xff0c;没有 nvme 驱动。这就会造成一些重装系统…

万能驱动助理篡改主页为2345的解决办法

万能驱动助理&#xff0c;因为驱动比较全&#xff0c;都是离线的包&#xff0c;并且足够小&#xff0c;所以很多人用&#xff0c;我也用&#xff0c;上次帮别人装系统之后用万能驱动助理安装驱动&#xff0c;然后发现默认安装了2345浏览器&#xff0c;然后我网上查了一下&#…

2012 r2 万能网卡驱动_MultiBeast | 黑苹果的驱动精灵简单使用解读

MultiBeast (苹果驱动精灵) 是一款第三方黑苹果驱动安装软件。它可以做引导、安装声卡、网卡、显卡、USB等常用驱动。集成系统工具有:重建Cache、修复权限、大量驱动、引导、补丁内核、引导时间配置文件,非常适合用于黑苹果用户安装驱动。 MultiBeast是英文界面,而且相关选项…

计算机win764位相机驱动,万能驱动助理win7 64位

万能驱动助理win7 64位是IT天空出品的一款能智能识别电脑硬件&#xff0c;并自动安装驱动程序的工具。万能驱动助理win7 64位可帮助用户快速、准确的安装合适的电脑驱动&#xff0c;万能驱动助理使用起来十分方便&#xff0c;让用户切身感受在驱动安装方面的无所不能。 相关软件…

php win8 下载64位下载,万能驱动助理(e驱动) Win8.1 64位专版 6.6 官方版

万能驱动助理(原&#xff1a;e驱动)一款根据硬件ID(HWID)来智能识别电脑硬件并且自动安装驱动程序的工具&#xff0c;是集 易用性、准确性、可靠性、高效性 和 广泛性 于一身的硬件驱动智能安装工具&#xff0c;它拥有简约且友好的用户界面&#xff0c;使用起来十分方便。 在Wi…

服务器系统万能驱动,IT天空万能驱动程序

ce安全网出示的IT天空万能驱动由IT苍穹官方网打造出,是一款功能非常强大的电脑驱动管理软件,针对当前主流硬件设备收集和整理得最为全面的驱动集合,支持市面上绝大多数主流硬件,兼容以往多数旧硬件。无论是显卡驱动、声卡驱动、网卡驱动等等全都具备,快速安装最新的适合用…

Kubernetes配置管理

1. ConfigMap简介 Kubernetes ConfigMap是一种用于存储应用程序配置信息的对象。在企业中&#xff0c;我们通常会有许多不同的应用程序&#xff0c;每个应用程序都需要一些配置信息&#xff0c;例如数据库连接字符串、API密钥等等。这些配置信息可能会因为环境的不同而有所不同…

WIN10 系统,笔记本电脑显示 “未检测到摄像头”

笔记本电脑无缘无故不能使用摄像头了&#xff0c;在打开腾讯会议的时候显示 “未检测到摄像头&#xff0c;检测设备是否连接” 打开设备管理器发现没有“照相机"这个选项。 并且在狠心下载360卫士进行系统修复后和驱动检测发现不是驱动的问题之后。摄像头仍然无法使用。 …

thinkpad笔记本摄像头灯亮着,但无图像显示

本人今天发现自己的笔记本的摄像头打开了无法使用&#xff0c;但绿灯亮着 1 在设备管理器中检查驱动有没有被禁用&#xff0c;如被禁用请启用 2 点击本子的电源图标&#xff0c;在弹出的窗口上找到摄像头图标&#xff0c;去掉其反斜框 3 再打开摄像头就可以使用了

Mysql安装教程(windows)

本文主要讲解如何去安装使用Mysql 一、下载Mysql 1、官网在线下载 MySQL官网&#xff1a;https://www.mysql.com/downloads/ 下载版本&#xff1a;MySQL Installer for Window 2、云盘离线下载 https://pan.baidu.com/s/1dB7kFiwrKpF5W-5XPn2FeQ?pwdrvb9 提取码&#xff1a;…

Inter RealSense D435i摄像头有驱动但是连接不上

第一步&#xff1a;打开电脑设置&#xff0c;找到设备和打印界面&#xff0c;找到对应连接的是摄像头设备 第二步&#xff1a;打开对应的相机设置属性界面 第三步&#xff1a;选择硬件属性 第四步&#xff1a;点击驱动程序进行点击更新驱动程序 第五步&#xff1a;点击浏览我的…

联想笔记本浏览器无法使用摄像头(EasyCamera驱动无法打开摄像头)

如题。现象描述 1.系统是win10 2.相机应用使用摄像头正常。 3.使用Chrome浏览需要使用相机的网页时&#xff0c;在地址栏有允许该网站使用相机 4.但是该相机无法正常显示画面 解决办法&#xff1a; 搜索了很多&#xff0c;换了各种驱动。折腾了大半夜还是不行的。&#…

dell 摄像头黑屏

因为要线上面试需要开摄像头&#xff0c;结果就报错。折腾了一个多小时还没解决。 买了个30多的外接摄像头&#xff0c;期望能解决问题吧。

联想微型计算机的摄像头驱动,Lenovo EasyCamera 联想摄像头驱动

lenovo easycamera是联想摄像头驱动程序&#xff0c;不光联想摄像头&#xff0c;任何摄像头需要正常使用都需要装驱动&#xff0c;安装摄像头驱动后才会在电脑上显示&#xff0c;免驱型摄像头也是有驱动的&#xff0c;只不过它把驱动集成进了摄像头中&#xff0c;当USB连接时会…