Bean注解
@Autowired 自动注入
@Resource 自动注入
@Component 标记是组件
@Respository 标记是一个DAO(实体对象)
@Service 标记是一个服务
@Controller 标记是**控制器**,根据返回字符串查找模板
@RestController 标记是**控制器**,用于直接返回数据
@Configuration 配置类
@Scope 声明Bean的作用域
HTTP请求
@Controller 标记是一个控制器,根据返回字符串查找模板
@RestController 直接返回数据,不需要查找模板
@RequestMapping("/system/user") 根据URL找到对应的类或者方法,通常放在类上面
@GetMapping("/list") GET映射,通常放在方法上
@PostMapping("/list") POST映射
@PutMapping("/list") PUT映射
@DeleteMapping("/list") DELETE映射
前后端参数传递
// 用在方法的参数前面,获取请求中表单类型的key=value格式的数据
@RequestParam("token") String token
// 必须有这个参数
@RequestParam(value = "username", required = false) String username
// 路径变量,参数与大括号里的名字一样要相同
@GetMapping("/{id}")
func(@PathVariable("id") int id)
// 获取请求body中的数据,JSON数据转换为Java对象
@PostMapping("/login")
func(@RequestBody User user)
// 返回JSON数据,常与Controller搭配
@ResponseBody
// 获取请求头的数据
@RequestHeader("X-Token") String token
表
@TableName("x_menu") // 表示这个类对应那个表
@TableId(value = "menu_id", type = IdType.AUTO) // 标记主键
// 标记虚拟字段,仅仅用来发送到前端,然后自己写setRoles方法
@TableField(exist = false)
private List<Integer> roleIds;
// 如果这个字段不为空,发送到前端
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Menu> children;
// 发送到前段时,忽略这个字段
@JsonIgnoreProperties
private String password;
// 开启事务
@Transactionalt
同一异常处理
// 监视哪几个类
@ControllerAdvice(annotations = {RestController.class, Controller.class})
// 监视什么异常
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
// 代码示例
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex) {
String msg = ex.getMessage();
if(msg.contains("Duplicate entry")) {
String[] split = msg.split(" ");
String error_msg = split[2] + "已存在";
return R.error(error_msg);
}
return R.error("SQL失败了");
}
@ExceptionHandler(CustomException.class)
public R<String> exceptionHandler(CustomException ex) {
return R.error(ex.getMessage());
}
}
配置启动
@SpringBootApplication // SpringBoot启动注释
@ComponentScan // 标注哪些路径下的类需要被Spring扫描
@EnableTransactionManagement // 开启事务
读取配置
@value // 直接读取各种配置源的属性名
参数校验
@NotNull // 被注释的元素不能为空
@NotEmpty // 被注释的字符串的不能为 null 也不能为空
@Email // 被注释的元素必须是 Email 格式