SpringBoot框架开发中常用的注解

文章目录

      • 接收HTTP请求。
      • RestController
      • 全局异常处理器
      • @Component
      • 依赖注入
      • Lombok
        • Data
        • Builder
        • sneakyThrows
        • RequiredArgsConstructor
      • 读取yml文件
      • 配置类注解

接收HTTP请求。

@RequestMapping  接收HTTP请求。具体一点是 @GetMapping  
@PostMapping  @PutMapping  @DeleteMapping  一共四个Http请求@RequestMapping("/file")  可以放在上面配置一个基础的路径,上面四个用来配置具体的路径。

对于get请求有两种参数方式,一个是查询参数,一个是路径参数。

查询参数 http:localhost:8080/user/get?id=1;

路径参数 http:localhost:8080/user/get/1

查询参数 使用 @RequestParam Integer id; 这样来接收。

对于路径参数 使用 PathVairable注解来接收参数。

对于表单请求 Post,数据携带携带在请求体中,使用RequestBody注解来接收

@PostMapping("/add")
public void test03(@RequestBody User user){}

RestController

这个注解是Controller和ResponseBody的结合。

  • @Controller:表示该类是一个控制器,能够处理 HTTP 请求。

  • @ResponseBody:表示方法返回的对象会直接通过 HTTP 响应返回,而不是渲染为视图。

  • @Controller 注解用于传统的 Web 应用,通常会返回视图名,由视图解析器(如 Thymeleaf 或 JSP)来渲染视图。

  • @RestController 注解用于构建 RESTful API,方法返回的不是视图,而是直接返回数据(通常是 JSON)。

全局异常处理器

对于异常处理需要配置全局异常处理器。

用来了两个注解,一个是RestConrollerAdvice注解,另一个是ExceptionHanler注解。

**@ControllerAdvice**** 用于定义全局的异常处理、全局数据绑定、全局模型属性等。 **

**@ExceptionHandler**** 注解用于定义一个方法来处理特定类型的异常。它可以处理控制器方法中抛出的异常,能够捕获特定的异常并返回自定义的响应。**

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)  //可以使用自定义的注解.class public Result handleException(Exception ex) {return Result.error(ex.getMessage());}
}

@Component

@Component 是一个通用的 Spring 注解,用于标记一个类作为 Spring 容器中的一个 Bean,可以用于任何层次(包括 DAO、服务层、控制器等)。

提供派生的注解方式

@Service 表示自己是服务层组件
@Repository 标记数据访问层 Dao 组件
@Controller 用来标记控制器类组件  这是SpringMVC的控制器,用来处理请求并返回视图。

依赖注入

IOC实现了控制反转,讲Bean的创建交给了Spring容器去做,现在需要实现依赖注入,创建对象。

@Autowired 注解告诉 Spring 框架自动将需要的 Bean 注入到指定的字段、构造器或方法中,Spring 容器会根据类型或名称自动找到匹配的 Bean 并注入。

Lombok

Lombok 是一个 Java 库,通过注解的方式,自动生成常见的样板代码(如 getter、setter、toString、equals、hashCode、构造器等),从而简化 Java 类的代码编写,提升开发效率。Lombok 利用注解处理器(annotation processor)在编译时自动生成代码,这样开发者就不需要手动编写这些重复的、冗长的代码了。

自动生成getter、setter、toString、equals、hashcode、构造器等方法,提高了开发的效率。

@Data 是一个组合注解,包含了 @Getter@Setter@ToString@EqualsAndHashCode 以及 @RequiredArgsConstructor

Data

正常使用三个注解即可。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Carousel {private Integer id;private String imageUrl;
}
Builder

使用 <font style="color:#403f53;background-color:#fbfbfb;">@Builder</font> 注解,Lombok 会自动为你生成一个构建器类,通过该构建器可以设置对象的各种属性,并最终构建出该对象。这个方式避免了传统构造器方法中传递过多参数的冗长,提供了更加直观和灵活的对象创建方式。

sneakyThrows

对于出现异常的方法可以使用下面的:

<font style="color:#403f53;background-color:#fbfbfb;">@SneakyThrows</font> 注解用来自动抛出检查型异常,避免手动捕获或声明异常。这对于简化代码和避免不必要的异常声明非常有用。

自动抛出检查形异常;

RequiredArgsConstructor

通过RequiredArgsConstructor +final 关键字,实现对象的注入。

  • **@RequiredArgsConstructor**:这是 Lombok 提供的注解,它会自动生成一个构造器,该构造器包含所有被 final 修饰的字段和被 ``
  • **final**** 关键字**:将字段标记为 final,意味着该字段一旦赋值就不能被修改。通过将依赖注入的字段设置为 final,可以确保它们在对象创建后不会被更改,从而增强对象的不可变性。
@RequiredArgsConstructor
public class UserController {private  final  UserService userService;

读取yml文件

有一些信息在yml文件中进行了配置,在代码中需调用信息。

@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;

@Value 是 Spring 框架中用于注入属性值的注解。它通常用于将外部配置文件(如 application.propertiesapplication.yml)中的属性值注入到 Spring 管理的 Bean 中。

配置类注解

@Configuration 是 Spring 框架中的一个注解,用于标识一个类作为配置类(Configuration Class),该类可以包含 Spring 容器的 bean 定义。通常,使用 @Configuration 注解的类中会定义一些 @Bean 注解的方法,这些方法用于向 Spring 容器注册 bean,从而支持通过 Java 配置来代替 XML 配置文件。

@Configuration
public class MinioConfig {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.accessKey}")private String accessKey;@Value("${minio.secretKey}")private String secretKey;//Spring会自动扫描,并注册Bean实列@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();}}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg(音视频处理的瑞士军刀)开发实战指南

【欢迎关注编码小哥&#xff0c;学习更多实用的编程方法和技巧】 FFmpeg开发实战指南 1. FFmpeg简介 开源多媒体处理框架支持音视频编解码跨平台&#xff08;Windows/Linux/Mac&#xff09; 2. 环境准备 2.1 安装FFmpeg # Ubuntu sudo apt-get install ffmpeg libavcodec-…

洛谷B4071 [GESP202412 五级] 武器强化

题目传送门&#xff01; 思路 我愿称之为gesp5史上最难想。。。 做法&#xff1a;贪心模拟&#xff08;or二分&#xff09; 对于贪心算法来说&#xff0c;最最最无法理解的地方&#xff1a;选择价格最低的配件来转换&#xff0c;还是选择拥有最多配件的其他武器来转换。 选…

TVS二极管选型【EMC】

TVS器件并联在电路中&#xff0c;当电路正常工作时&#xff0c;他处于截止状态&#xff08;高阻态&#xff09;&#xff0c;不影响线路正常工作&#xff0c;当线路处于异常过压并达到其击穿电压时&#xff0c;他迅速由高阻态变为低阻态&#xff0c;给瞬间电流提供一个低阻抗导通…

qt鼠标右键菜单

来看一个小例子 // 重写鼠标右键事件 void QtGuiApplication2::mousePressEvent(QMouseEvent* event) {if (event->button() Qt::RightButton){m_pMenuRD->exec(QCursor::pos());} } 鼠标右键启动菜单&#xff0c;菜单里面有啥呢&#xff1f; // 先来声明一下 // 右键…

用C++使用带头单向非循环链表,实现一个哈西桶

用C使用带头单向非循环链表&#xff0c;实现一个哈西桶 在C中使用带头单向非循环链表来实现哈希桶是一种常见的做法&#xff0c;特别是在实现哈希表时。哈希桶是哈希表的基本存储单元&#xff0c;用于存储具有相同哈希值的元素。以下是一个简单的示例&#xff0c;展示了如何使用…

Azkaban其二,具体使用以及告警设置

目录 Azkaban的使用 1、使用Flow1.0(比较老旧&#xff09; 2、Flow2.0的用法 1、小试牛刀 2、YAML格式的数据 3、多任务依赖 4、内嵌流&#xff08;嵌套流&#xff09;案例 5、动态传参 3、Azkaban的报警机制 1&#xff09;邮箱通知 2&#xff09;电话报警机制 4、关…

文档 | Rstudio下的轻量级单页面markdown阅读器 markdownReader

需求&#xff1a;在写R数据分析项目的时候&#xff0c;代码及结果的关键变化怎么记录下来&#xff1f;最好git能很容易的跟踪版本变化。 markdown 是最理想的选择&#xff0c;本文给出一种Rstuidio下的轻量级md阅读器实现&#xff1a;markdownReader。书写md还是在Rstudio。更…

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…

Arduino Uno简介与使用方法

目录 一、Arduino Uno概述 1. 硬件特性 2. 开发环境 二、Arduino Uno的基本使用方法 1. 硬件连接 2. 软件编程 三、Arduino Uno编程基础 1. 基本语法 2. 常用函数 四、Arduino Uno应用举例 1. LED闪烁 2. 温度检测 3. 超声波测距 五、Arduino Uno的扩展与应用 1…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…

【人工智能】Python实现时序数据预测:ARIMA与LSTM的对比

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 时序数据预测是数据科学中的一个重要任务,广泛应用于金融市场预测、天气预报、销售预测等领域。常见的时序数据预测方法包括传统统计学模型…

滑动窗口。

1456 定长子串中元音的最大数目 采用滑动窗口。每次移动一个位置&#xff0c;判断当前窗口内的子串内目标元素的个数&#xff0c;若比之前更大就更新结果。 如何判断是否更新结果&#xff1f;也即&#xff0c;如何判断当前窗口内所含目标元素个数&#xff0c;是否为遍历到这个…

公共数据授权运营系统建设手册(附下载)

在全球范围内&#xff0c;许多国家和地区已经开始探索公共数据授权运营的路径和模式。通过建立公共数据平台&#xff0c;推动数据的开放共享&#xff0c;促进数据的创新应用&#xff0c;不仅能够提高政府决策的科学性和公共服务的效率&#xff0c;还能够激发市场活力&#xff0…

java 常量池详解

目录 java 常量池详解一 静态常量池&#xff08;Static Constant Pool&#xff09;1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池&#xff08;Runtime Constant Pool&#xff09;2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池&#xff08;Primitive Type C…

电脑主机后置音频插孔无声?还得Realtek高清晰音频管理器调教

0 缘起 一台联想电脑&#xff0c;使用Windows 10 专业版32位&#xff0c;电脑主机后置音频插孔一直没有声音&#xff0c;所以音箱是接在机箱前面版的前置音频插孔上的。 一天不小心捱到了音箱的音频线&#xff0c;音频线头断在音频插孔里面了&#xff0c;前置音频插孔因此用不…

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长&#xff0c;已成为企业开发大型项目的必备技术&#xff0c;中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念&#xff1a;微服务是一种软件架构风格&#xff0c;以专注于单一职责的多个响应项目为基…

UDP_TCP

目录 1. 回顾端口号2. UDP协议2.1 理解报头2.2 UDP的特点2.3 UDP的缓冲区及注意事项 3. TCP协议3.1 报头3.2 流量控制2.3 数据发送模式3.4 捎带应答3.5 URG && 紧急指针3.6 PSH3.7 RES 1. 回顾端口号 在 TCP/IP 协议中&#xff0c;用 “源IP”&#xff0c; “源端口号”…

《Spring Framework实战》2:Spring快速入门

欢迎观看《Spring Framework实战》视频教程 Spring快速入门 目录 1. Java™开发套件&#xff08;JDK&#xff09; 2. 集成开发人员环境&#xff08;IDE&#xff09; 3. 安装Maven 4. Spring快速入门 4.1. 开始一个新的Spring Boot项目 4.2. 添加您的代码 4.3. 尝…

Kafka集群部署与安装

一、什么是Kafka Kafka是一个Pub-Sub的消息系统&#xff0c;无论是发布还是订阅&#xff0c;都须指定Topic。 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者大规模的网站中的所有动作流数据 二、JMS&#xff1a;Java Message Service Java消息服…

利用Deeplearning4j进行 图像识别

目录 图像识别简介 神经网络 感知器 前馈神经网络 自动编码器 受限玻尔兹曼机 深度卷积网络 理解图像内容以及图像含义方面&#xff0c;计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题&#xff0c;接着重点讲解一个基于深度学习的解决方法。我们会…