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 格式