# 其他注解
# PostConstruct
当一个类被装配好后执行该函数
@Component
public class Filer{
@PostConstruct
public void init(){
// DO
}
}
# 参数校验
# 启用校验
必须显示的启用校验才能使参数校验开始工作
# @Valid
SpringBoot默认支持,遵守(JSR-303/JSR-380)Java Bean Validated标准
# @Validated
SpringBoot特别提供需要依赖Spring-boot-stater-validation,是Java Bean Validated的拓展
# 区别
@Valid | @Validated | |
---|---|---|
遵循标准 | Java Bean Validted | Spring拓展 |
作用范围 | 全部支持 | 不支持字段,方法返回值 |
分组校验 | no | Yes |
嵌套校验 | Yes | 配合@Valid |
# 校验注解
注解 | 说明 |
---|---|
@NotNull | 校验字段值不能为 null |
@Null | 校验字段值必须为 null 。 |
@NotEmpty | 校验字段值不能为 null 或空。 |
@NotBlank | 校验字符串值不能为 null 或空白字符。 |
@Size | 校验字段值的长度或大小在指定范围内。 |
@Min | 校验数字字段值必须大于或等于指定值。 |
@Max | 校验数字字段值必须小于或等于指定值。 |
@DecimalMin | 校验数字字段值必须大于或等于指定的小数值。 |
@DecimalMax | 校验数字字段值必须小于或等于指定的小数值。 |
@Digits | 校验数字字段值的整数部分和小数部分的位数是否符合要求。 |
@Positive | 校验数字字段值必须为正数。 |
@PositiveOrZero | 校验数字字段值必须为正数或零。 |
@Negative | 校验数字字段值必须为负数。 |
@NegativeOrZero | 校验数字字段值必须为负数或零。 |
@Email | 校验字段值必须是一个合法的电子邮件地址。 |
@Pattern | 校验字段值必须匹配指定的正则表达式。 |
@Future | 校验日期字段值必须是将来的日期。 |
@FutureOrPresent | 校验日期字段值必须是将来的日期或当前日期。 |
@Past | 校验日期字段值必须是过去的日期。 |
@PastOrPresent | 校验日期字段值必须是过去的日期或当前日期。 |
# 配置注入
# @Value
@Value("${keyName}") 从配置文件中获取指定的键值,支持使用SpEL表达式
/* yml文件数据如下
keyName: XXX
*/
@Value("${keyName}")
private int age; // = XXX
在使用SpEL表达式时
/* yml文件数据如下
lifeTime: 1000 * 60
*/
@Value("#{${lifeTime}}")
private int lifeTime; // 60000
# @ConfigurationProperties
@ConfigurationProperties(prefix="前缀") 只能从全局配置中读取
从配置文件中获取整体
/* yml文件中如下
user:
name: XXX
age: XXX
*/
@ConfigurationProPerties(prefix="user")
public class UserData{
public String name;
public int age;
}
// Springboot会自动帮你配置
# url请求路径解析(映射)
支持多种请求方法,最常用的就是Post,Get这两种
# @RequestMapping("url")
响应url路径请求, 可以自定义请求方式
# @PostMapping("url")
响应url路径的post请求
# @GetMapping("url")
响应url路径的get请求
/*下面这个类会响应/user下的请求*/
@RestController
@RequestMapping("user")
public class userController{
@PostMapping("/data")
public String data(){
return "user data";
}// 这个方法会响应/user/data 的post请求
}
# 组件
# @RestController
- @RestController // 声明一个组件返回数据的组件
# @Controller
- @Controller //控制组件声明,加入到Springboot容器中,用于对网络请求做出响应 返回图层的组件
# @Service
- @Service // 服务组件声明,加入到Springboot容器中,用于处理业务逻辑
# @Repository
- @Repository //仓库组件声明,加入到Springboot容器中,用于封装对数据库的访问
# @Component
- @Component //普通组件声明,上述说道的声明都包含这个声明
# @Configuration
- @Configuration // 声明配置类
# 请求解析方法
# @RequestParam
- @RequestParam //声明接收url?后的参数
# @RequestBody
- @RequestBody //声明接收body中的数据(json)
# @RequestHeader
- @RequestHeader(name="XXX") //声明接收head中的XXX的值
# @PathVariable
- @PathVariable // 从url中解析路径
/*假设有下列三个方法*/
/*假设请求为 url?name=123&password=123
那返回值就是123123
*/
@RequestParam
public String post(String name,String password){
return name+password;
}
/*
假设请求body为
"{
"name": "123",
"password": "123"
}"
如果参数是一个对象,并且可以和json格式相匹配,那Springboot会自动封装到数据中
这个过程应该是使用反射去调用getter/setter执行的,所以这两个方法是必要的
@Data
public class user{
private String name;
private String password;
}
*/
@RequestBody
public String post(String data){
return data;
}
// data == 请求body(除非json格式和Java对象相匹配)
/*假设请求路径为/user/1
*/
@GetMapping("user/{id}")
public String post(@PathVariable("id") Long id){
return id;
}
// id == 1
/*假设请求头header中jwt为"123"
那参数就是"123"
*/
public String post(@RequestHeader(name="jwt")String jwt){
return jwt;
}