1.Spring Boot 是什么
是一個基于Spring的開源的輕量級框架,目的是為了簡化Spring應(yīng)用的初始搭建和開發(fā)的過程,相當(dāng)于是對Spring的一個擴展。
Spring Boot具備的特征:
? ? 1.可以創(chuàng)建獨立的Spring應(yīng)用,并且基于其Maven或Gradle插件構(gòu)建,創(chuàng)建可執(zhí)行的JARS和WARS。
2.內(nèi)置Tomcat,Jettey等Servlet容器。
3.提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置。
Spring Boot的兩個重要策略:
1.開箱即用(Outofbox):是指在開發(fā)過程中,通過配置MAVEN的pom.xml添加相關(guān)的依賴,
以便使用注解的方式代替XML管理對象的生命周期。
2.約定大于配置(Convention over configuration): 個人理解是SpringBoot幫我們做了很多默認的配置,
我們盡量使用默認的配置開發(fā),在沒有默認的情況下,自己配置,可以減少我們做決定的數(shù)量。
2.常用注解:
@SpringBootApplication :Spring Boot的自動配置,用來開啟Spring Boot的各項功能
等價于:
@Configuration: 用于定義配置類,可以代替XML配置文件,內(nèi)部一般包含帶有@Bean注解的方法。
@EnableAutoConfiguration: 開啟自動配置,注解后可以自動開啟當(dāng)前類路徑包下的配置(@Configuration)來初始化Bean。
@ComponentScan:自動裝配,標識了@Controller,@Service,@Repository,@Component注解的類到Spring容器中。
2-1.Bean相關(guān):
@Autowired:注入依賴對象,自動裝配Bean。只能用于被以下注解標識的類中:
@Controller:對應(yīng)SpringMVC控制器層,用于接收請求并調(diào)用Service層數(shù)據(jù)返回前端。
@Service:對應(yīng)業(yè)務(wù)層,業(yè)務(wù)邏輯通常在這里實現(xiàn),通過調(diào)用Dao層來和DB交互。
@Repository:對應(yīng)持久層(DAO),主要處理和數(shù)據(jù)庫相關(guān)的操作。
@Component:通用注解,標注任意類為Spring組件。不知道具體屬于哪個層可以用這個標注,(可以代替@Configuration注解)。
@RestController:是@Controller和@ResponseBody的合集,表示這是控制器,同時方法的返回值都將是JSON或XML格式的。
@Scope: 聲明Spring Bean的作用域,有以下幾種參數(shù):
????singleton:單例,唯一實例。Spring中的Bean默認都是單例的。
????prototype:每次請求會創(chuàng)建一個新的Bean實例。
????request:每次Http請求都會產(chǎn)生一個新的Bean,只在當(dāng)前Http request中有效。
????session:每次Http請求都會產(chǎn)生一個新的Bean,只在當(dāng)前Http session中有效。
2-2.REST API相關(guān):
@GetMapping:接收GET請求,(從服務(wù)器獲取資源),等價于@RequestMapping(,method=RequestMethod.GET)。
@PostMapping:接收POST請求,(創(chuàng)建新的資源),等價于@RequestMapping(,method=RequestMethod.POST)。
@PutMapping:接收PUT請求,(更新服務(wù)器上的資源,提供整個),等價于@RequestMapping(,method=RequestMethod.PUT)。
@DeleteMapping:接收DELETE請求,(刪除服務(wù)器上的資源),等價于@RequestMapping(,method=RequestMethod.DELETE)。
@PatchMapping:接收PATCH請求,(更新服務(wù)器上的資源,提供部分),等價于@RequestMapping(,method=RequestMethod.PATCH)。
2-3.前后端傳值
@PathVariable:用于獲取Url里的參數(shù),例子:"/hello/{ID}/"里的{ID}。
@RequestParam:寫在方法的參數(shù)前面來取值??梢灾付╪ame。
@RequestBody:寫在方法的參數(shù)前面來取值,接收Content-Type為application/json的數(shù)據(jù),
Spring會使用HttpMessageConverter將json轉(zhuǎn)化成Java對象。
2-4.讀取配置文件
@Value("${xxx}"):讀取application.yml 配置文件中的屬性。
@ConfigurationProperties("prefix="xxx"):可以將配置文件注冊成Bean(Get,Set)。
@PropertySoure("xxx.properties"):讀取指定配置文件。
2-5.參數(shù)校驗
@NotEmpty 不能為 null 也不能為空
@NotBlank 不能為 null,并且必須包含一個非空白字符
@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@AssertTrue 被注釋的元素必須為 true
@AssertFalse 被注釋的元素必須為 false
@Pattern(regex=,flag=)被注釋的元素必須符合指定的正則表達式
@Email 被注釋的元素必須是 Email 格式。
@Min(value)被注釋的元素必須是一個數(shù)字,必須大于等于指定的最小值
@Max(value)被注釋的元素必須是一個數(shù)字,必須小于等于指定的最大值
@DecimalMin(value)被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值
@DecimalMax(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值
@Size(max=, min=)被注釋的元素的大小必須在指定的范圍內(nèi)
@Digits (integer, fraction)被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內(nèi)
@Past被注釋的元素必須是一個過去的日期
@Future 被注釋的元素必須是一個將來的日期
--
@Valid:在傳入?yún)?shù)的前面使用該注解讓以上注解生效。驗證失敗會拋出異常,MethodArgumentNotValidException,驗證@PathVariable時,在類上添加注解@Validated。
2-6.全局異常處理:
@ControllerAdvice:定義全局異常處理類。
@ExceptionHandler:要捕獲的異常,及處理方法,和@ControllerAdvice配合使用。