文章目录
接收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.properties
或 application.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();
}
}