Java主流开发框架之请求响应常用注释
1.@RestController
标记一个类为 REST 控制器,处理 HTTP 请求并直接返回数据(如 JSON/XML),而不是视图(如 HTML),一般是放在类的上边
@RestController
public class UserController {
@GetMapping("/hello") //后续GetMapping过多可以写一个共有的路径在类的外边
public String hello() {
return "Hello, World!";
}
}
2.@RequestMapping
用于将 HTTP 请求映射到特定的处理方法(Controller 方法),指定请求的URL路径,定义 HTTP 方法类型(GET、POST 等),路径一般和下面的方法名相同
//数组参数
@RestController
@RequestMapping("/url")
public class array {
@RequestMapping("/array")
public String array(String[] hobby) {
System.out.println(Array.toString(hobby));
return "OK";
}
}
3.@RequestParam
用于绑定 HTTP 请求参数到控制器方法参数的注解,通常用于处理 URL 中的查询参数。如果方法形参和请求参数名称不匹配,可以使用该注解。
提取请求参数:从 URL 查询字符串(如 /user?id=123 )或表单数据中获取值。
参数绑定:将参数值自动转换为方法参数的类型(支持基本类型、对象、集合等)。
验证与默认值:支持参数必填性检查和默认值设置。
//集合参数
@RestController
@RequestMapping("/url")
public class array {
@RequestMapping("/list")
public String list(@RequestParam List<String> hobby) {
System.out.println(hobby);
return "OK";
}
}
//设置默认值
public Result page(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer pageSize){
...
}
4.@DateTimeFormat
用于处理日期和时间类型参数绑定的注解,主要用于将字符串格式的请求参数。
指定日期格式:定义字符串与日期对象的转换规则。
支持多种类型:兼容 java.util.Date 、 java.time.* (JSR-310)等日期/时间类。
自动类型转换:Spring 在绑定请求参数时自动应用格式规则。(pattern="yyyy-MM-dd HH:mm:ss"
@RequestMapping("/dataParm")
public String dataParam(@(DataTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")LocalDataTime updataTime){
System.out.println(updataTime);
return "OK";
}
5.@RequestBody
一般绑定到方法的参数前,用于接收客户端发送的JSON、XML 等数据动转换封装为 Java的实体对象。
数据绑定:将请求体内容(如 JSON)反序列化为 Java 对象。
支持多种格式:通过 HttpMessageConverter 处理 JSON(默认)、XML、表单等数据格式。
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "ok";
}
Public class User{
private String name;
private Integer age;
...
}
//json格式数据:
{
"name":"jack"
"age":"16"
...
}
6. @PathVariable
用于从 URI 模板中提取变量值并绑定到方法参数的注解。
提取路径变量:从 URL 的占位符(如 /user/{id} )中获取动态值。
类型自动转换:将字符串形式的路径变量转换为方法参数类型(如 String → Long )。
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
// 根据 id 查询用户
return userService.findById(id);
}
7.@Resource
依赖注入,给对象的属性注入数据,可以定义在字段上,也可以定义在方法上。一般用在注入dao层数据源,跟@Autowired相似,区别就是@Autowired默认是先根据类型,而@Resource默认是先根据名称
三层架构(Controller-Service-Dao)
8.@Autowired
运行时,IOC容器会提供该类型的Bean对象,并赋值给该容器
9.@Service
标记一个类作为服务层,交给IOC容器管理,成为IOC容器的bean对象(成为Spring容器管理的Bean),可以通过依赖注入(如 @Autowired
)在其他地方使用它,service运行的时候依赖Dao层,需要IOC容器提供
@RestController
Public class EmpController{
@Autowired //运行时,IOC容器会提供该类型的Bean对象,并赋值给该容器(依赖注入)
private EmpService empservice;
...
}
10.@Component
交给IOC容器管理,成为IOC容器的bean对象,Controller运行的时候依赖Service层,需要IOC容器提供
@Component
public class EmpServiceA implements EmpService{
@Autowried //运行时,IOC容器会提供该类型的Bean对象,并赋值给该容器(依赖注入)
private EmpDao empdao;
...
}
@Component
public class EmpDaoA implements EmpDao{
...
}