各种注解含义及使用
@RestController
@RestController
注解 是Spring 4.0引入的一个组合注解,用于简化RESTful Web服务的开发。@RestController注解 相当于 @Controller 和 @ResponseBody 注解的组合,表示该类是一个控制器,并且所有的方法返回值都将直接写入HTTP响应体中,而不是返回视图名称。
对应依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
public class ExampleController {}
接口返回参数为实体类时,返回Json数据
@RequestMapping
用来处理请求地址到处理器controller功能方法映射规则的注解,这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法controller上,可用于类或方法上。
@RestController
@RequestMapping("/api")
public class ExampleController {@RequestMapping("/greet")public String greet(String name) {return "Hello";}
}
访问方式:http://localhost:8080/api/greet
@RequestParam
用于获取查询参数
@RestController
@RequestMapping("/api")
public class ExampleController {@GetMapping("/greet")public String greet(@RequestParam String name) {return "Hello, " + name + "!";}
}
访问方式:http://localhost:8080/api/greet?name=Leslie
返回:Hello,Leslie!
@PathVariable
用于获取路径参数,用于get方法
@RestController
@RequestMapping("/api")
public class ExampleController {@GetMapping("/greet/{name}")public String greet(@PathVariable String name) {return "Hello, " + name + "!";}
}
访问方式:http://localhost:8080/api/greet/Leslie
返回:Hello,Leslie!
@RequestBody
用于获取请求体中的数据
@RestController
@RequestMapping("/api")
public class ExampleController {@PostMapping("/greet")public String greet(@RequestBody User user) {return "Hello, " + user.getName() + "!";}
}class User {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
访问方式:http://localhost:8080/api/greet
返回:请求体为{"name": "Leslie"},响应将为Hello, Leslie!。
@Validated
校验参数是否符合规范,用于函数参数前
@RestController
@RequestMapping("/api")
public class ExampleController {@PostMapping("/greet")public String greet(@Validated String name) {return "Hello, " + name + "!";}
}
@JSONField(serialize = false)
阿里巴巴 Fastjson 库 提供的注解,用于控制 Java 对象与 JSON 数据转换时的字段行为。
- 禁用字段的序列化
当使用 Fastjson 将 Java 对象转换为 JSON 字符串时,被标记的字段不会包含在生成的 JSON 中。
典型场景:隐藏敏感信息(如密码、密钥)或不必要传输的字段。
@RequiredArgsConstructor
Lombok的注解,简化了对@Autowired书写,可以代替@Autowired注解
写在 Controller 类上
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency>
注意事项
- 声明的变量必须加上final修饰
- 基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入
@SneakyThrows
Lombok 提供的注解,旨在帮助开发者简化异常处理。
它允许方法抛出检查型异常而无需显式声明或捕获这些异常。
这对于那些不希望在方法签名中声明异常或不愿意编写复杂的 `try-catch` 块的场景非常有用。
直接写在函数上
Leslie Lee 随笔