1.Spring Boot 是什么
是一个基于Spring的开源的轻量级框架,目的是为了简化Spring应用的初始搭建和开发的过程,相当于是对Spring的一个扩展。
Spring Boot具备的特征:
1.可以创建独立的Spring应用,并且基于其Maven或Gradle插件构建,创建可执行的JARS和WARS。
2.内置Tomcat,Jettey等Servlet容器。
3.提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置。
Spring Boot的两个重要策略:
1.开箱即用(Outofbox):是指在开发过程中,通过配置MAVEN的pom.xml添加相关的依赖,
以便使用注解的方式代替XML管理对象的生命周期。
2.约定大于配置(Convention over configuration): 个人理解是SpringBoot帮我们做了很多默认的配置,
我们尽量使用默认的配置开发,在没有默认的情况下,自己配置,可以减少我们做决定的数量。
2.常用注解:
@SpringBootApplication :Spring Boot的自动配置,用来开启Spring Boot的各项功能
等价于:
@Configuration: 用于定义配置类,可以代替XML配置文件,内部一般包含带有@Bean注解的方法。
@EnableAutoConfiguration: 开启自动配置,注解后可以自动开启当前类路径包下的配置(@Configuration)来初始化Bean。
@ComponentScan:自动装配,标识了@Controller,@Service,@Repository,@Component注解的类到Spring容器中。
2-1.Bean相关:
@Autowired:注入依赖对象,自动装配Bean。只能用于被以下注解标识的类中:
@Controller:对应SpringMVC控制器层,用于接收请求并调用Service层数据返回前端。
@Service:对应业务层,业务逻辑通常在这里实现,通过调用Dao层来和DB交互。
@Repository:对应持久层(DAO),主要处理和数据库相关的操作。
@Component:通用注解,标注任意类为Spring组件。不知道具体属于哪个层可以用这个标注,(可以代替@Configuration注解)。
@RestController:是@Controller和@ResponseBody的合集,表示这是控制器,同时方法的返回值都将是JSON或XML格式的。
@Scope: 声明Spring Bean的作用域,有以下几种参数:
singleton:单例,唯一实例。Spring中的Bean默认都是单例的。
prototype:每次请求会创建一个新的Bean实例。
request:每次Http请求都会产生一个新的Bean,只在当前Http request中有效。
session:每次Http请求都会产生一个新的Bean,只在当前Http session中有效。
2-2.REST API相关:
@GetMapping:接收GET请求,(从服务器获取资源),等价于@RequestMapping(,method=RequestMethod.GET)。
@PostMapping:接收POST请求,(创建新的资源),等价于@RequestMapping(,method=RequestMethod.POST)。
@PutMapping:接收PUT请求,(更新服务器上的资源,提供整个),等价于@RequestMapping(,method=RequestMethod.PUT)。
@DeleteMapping:接收DELETE请求,(删除服务器上的资源),等价于@RequestMapping(,method=RequestMethod.DELETE)。
@PatchMapping:接收PATCH请求,(更新服务器上的资源,提供部分),等价于@RequestMapping(,method=RequestMethod.PATCH)。
2-3.前后端传值
@PathVariable:用于获取Url里的参数,例子:"/hello/{ID}/"里的{ID}。
@RequestParam:写在方法的参数前面来取值。可以指定name。
@RequestBody:写在方法的参数前面来取值,接收Content-Type为application/json的数据,
Spring会使用HttpMessageConverter将json转化成Java对象。
2-4.读取配置文件
@Value("${xxx}"):读取application.yml 配置文件中的属性。
@ConfigurationProperties("prefix="xxx"):可以将配置文件注册成Bean(Get,Set)。
@PropertySoure("xxx.properties"):读取指定配置文件。
2-5.参数校验
@NotEmpty 不能为 null 也不能为空
@NotBlank 不能为 null,并且必须包含一个非空白字符
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
@Email 被注释的元素必须是 Email 格式。
@Min(value)被注释的元素必须是一个数字,必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
--
@Valid:在传入参数的前面使用该注解让以上注解生效。验证失败会抛出异常,MethodArgumentNotValidException,验证@PathVariable时,在类上添加注解@Validated。
2-6.全局异常处理:
@ControllerAdvice:定义全局异常处理类。
@ExceptionHandler:要捕获的异常,及处理方法,和@ControllerAdvice配合使用。