SpringBoot框架开发中常用的注解

文章目录

接收HTTP请求。

java 复制代码
@RequestMapping  接收HTTP请求。

具体一点是 @GetMapping  
@PostMapping  @PutMapping  @DeleteMapping  一共四个Http请求

@RequestMapping("/file")  可以放在上面配置一个基础的路径,上面四个用来配置具体的路径。

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

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

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

java 复制代码
查询参数 使用 @RequestParam Integer id; 这样来接收。

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

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

java 复制代码
@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**** 注解用于定义一个方法来处理特定类型的异常。它可以处理控制器方法中抛出的异常,能够捕获特定的异常并返回自定义的响应。**

plain 复制代码
@RestControllerAdvice
public class GlobalExceptionHandler {

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

@Component

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

提供派生的注解方式

plain 复制代码
@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

正常使用三个注解即可。

plain 复制代码
@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,可以确保它们在对象创建后不会被更改,从而增强对象的不可变性。
plain 复制代码
@RequiredArgsConstructor
public class UserController {

  
    private  final  UserService userService;

读取yml文件

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

plain 复制代码
@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 配置文件。

plain 复制代码
@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();
    }

}
相关推荐
续亮~9 分钟前
Spring Boot 项目中集成 Kafka-03
java·spring boot·后端·kafka
csdn_aspnet24 分钟前
在 ASP.NET CORE 中上传、下载文件
后端·asp.net·.netcore
ByteBlossom66635 分钟前
Swift语言的语法糖
开发语言·后端·golang
❦丿多像灬笑话、℡38 分钟前
leetcode 热题100(32. 最长有效括号)栈 c++
java·c++·leetcode
KeyPan43 分钟前
【数据结构与算法:八、排序】
开发语言·数据结构·人工智能·后端·算法·排序算法·scala
AI向前看1 小时前
F#语言的字符串处理
开发语言·后端·golang
m0_748251351 小时前
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
java·前端·spring
工业互联网专业1 小时前
基于springboot+vue的餐饮连锁店管理系统的设计与实现
java·vue.js·spring boot·毕业设计·源码·课程设计
初学者丶一起加油1 小时前
C语言基础:指针(常量指针和指针常量)
java·linux·c语言·开发语言·算法·ubuntu·visualstudio
NullPointerExpection1 小时前
java 使用 poi 对指定 excel 的指定多列进行从左到右树形行合并
java·开发语言·excel·poi