Springboot入门
spring boot入门
使用@SpringBootApplication注解
使用@SpringBootApplication等同于启用了下面三个注解:
@EnableAutoConfiguration: enable Spring Boot’s auto-configuration mechanism
@ComponentScan: enable @Component scan on the package where the application is located (see the best practices)
@Configuration: allow to register extra beans in the context or import additional configuration classes
下面是例子
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
请求参数
简单参数
原始方法
- Controller 方法形参中声明 HttpServletRequest 对象
- 调用对象的 getParameter(参数名)
@RequestParam 注解
- 方法形参名称和请求参数名称不匹配时,通过跟注解完成映射
- 该注解的 required 属性默认是 true, 代表请求参数必须传递
@RestController
public class RequestController {
@RequestMapping("/request")
public String requestContorller(HttpServletRequest request) {
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
int age = Integer.parseInt(ageStr);
System.out.println("request");
return "OK";
}
}
Spring 方法
- 请求参数名与方法形参名相同
- 会自动进行类型转换
@RequestMapping("/simpleParam")
public String simpleParamContorller(String name, Integer age) {
System.out.println(name + ": " + age);
return "OK";
}
@RequestParam 注解
@RequestMapping("/requestParam")
public String simpleParamContorller(@RequestParam(
name = "name",
required = false
) String userName, Integer age) {
System.out.println(userName + ": " + age);
return "OK" + " " + userName + " " + age;
}
实体参数
传递实体类, 定义 POJO(Plain Old Java Object)接受即可
请求的参数名与方法的形参名保持一致
@RequestMapping("pojo")
public String POJOController(User user) {
System.out.println(user);
return "OK";
}
class User {
String name;
int age;
}
复杂实体对象,按照对象嵌套关系依次传递
数组集合参数
请求参数名与形参名相同且多个,定义数组类型即可接收参数
@RequestMapping("/arrayParam")
public String arrayController(String[] array) {
System.out.println(Arrays.toString(array));
return "OK";
}
集合参数
@RequestMapping("/listParam")
public String arrayController(@RequestParam List<String> list) {
System.out.println(list);
return "OK";
}
日期参数
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime dateTime) {
System.out.println(dateTime);
return "OK";
}
Json 参数
定义实体类接收json
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user) {
System.out.println(user);
return "OK";
}
class User {
String name;
int age;
String country;
String lang;
}
postman中使用 Body->raw->json 发起请求
{
"name": "yue",
"age": 25,
"country": "CN",
"lang": "zh-cn"
}
路径参数
通过请求url直接传递参数, 通过{...}来标识该路径参数, 需要使用@PathVariable获取路径参数
{...}中的参数名必须与方法的形参名保持一致
@RequestMapping("/path/{id}/{name}")
public String pathParam(@PathVariable Integer id,@PathVariable String name){
System.out.println(id +" "+ name);
return "OK";
}