Spring Boot介紹:
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者
什么是springboot ?
用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(properties或yml文件)
創建獨立的spring引用程序 main方法運行
嵌入的Tomcat 無需部署war文件
簡化maven配置
自動配置spring添加對應功能starter自動化配置
spring boot來簡化spring應用開發,約定大於配置,去繁從簡,just run就能創建一個獨立的,產品級別的應用
Spring Boot有哪些優點?
-快速創建獨立運行的spring項目與主流框架集成
-使用嵌入式的servlet容器,應用無需打包成war包
-starters自動依賴與版本控制
-大量的自動配置,簡化開發,也可修改默認值
-准生產環境的運行應用監控
-與雲計算的天然集成
SpringBoot所具備的特征:
-
可以創建獨立的Spring應用程序,並且基於其Maven或者Gradle插件,可以創建可執行的JARs和WARs;
-
內嵌Tomcat或Jetty等Servlet容器;
-
提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;
-
盡可能自動配置Spring容器;
-
提供准備好的特性,如指標、健康檢查和外部化配置;
-
絕對沒有代碼生成,不需要XML配置;
SpringBoot啟動類中的注解:
@StringBootApplication注解標明此類為啟動類
@StringBootApplication注解是SpringBoot項目的核心注解,目的是開啟自動配置
在這個配置中包含了以下三種注解:
@StringBootConfiguration(此注解意思為:標明此類為配置類)繼承了@Configuration注解,用來加載配置文件
@EnableAutoConfiguration(此注解意思為:自動配置)
@ComponentScan(此注解意思為:掃描包實例化)遞歸掃描
SpringBoot和SpringCloud的不同?
SpringBoot是Spring推出用於解決傳統框架配置文件冗余,裝配組件繁雜的基於Maven的解決方案,旨在快速搭建單個微服務
而SpringCloud專注於解決各個微服務之間的協調與配置,服務之間的通信,熔斷,負載均衡等
技術維度並相同,並且SpringCloud是依賴於SpringBoot的,而SpringBoot並不是依賴與SpringCloud,甚至還可以和Dubbo進行優秀的整合開發
總結:
SpringBoot專注於快速方便的開發單個個體的微服務
SpringCloud是關注全局的微服務協調整理治理框架,整合並管理各個微服務,為各個微服務之間提供,配置管理,服務發現,斷路器,路由,事件總線等集成服務
SpringBoot不依賴於SpringCloud,SpringCloud依賴於SpringBoot,屬於依賴關系
SpringBoot專注於快速,方便的開發單個的微服務個體,SpringCloud關注全局的服務治理框架
Thymeleaf模板:
Thymeleaf代替了我們之前web開發的JSP它也可以輕易的與Springmvc等web框架進行集成
Thymeleaf特點:
能直接在瀏覽器中打開並正確,顯示模板頁面,不需要重啟整個web應用
由於Thymeleaf使用了XMLDOM解析器,因此它並不適合用於處理大規模的XML文件
共享Session:
1、引入redis依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、添加注解
@EnbaleRedisHttpSession(maxIncativeIntervaLInsecands=46561*50)
maxIncativeIntervaLInsecands:設置Session失效時間
SpringBootJpa:
Java持久化規范、它的出現主要是為了簡化,現有的持久化開發工作和整合ORM技術
SpringBoot是Spring基於ORM框架,JPA規范的基礎上封裝的一套JPA應用框架,可以大大提高開發效率
SpringBootJpa默認預先生成了一些基本的CURD方法:例如增刪改查等
SpringBoot中應當注意的注解及其作用:
@PathVariable是spring3.0中的一個新功能;能接受請求路徑中占位符的值,獲取url中的數據
@RestControllerAdvice注解和@ControllerAdvice的注解區別:
注解有@ControllerAdvice的類,需要在具體方法上同時添加@ExceptionHandler和@ResponseBody注解;
注解有@RestControllerAdvice的類,只需要在具體方法上添加@ExceptionHandler注解;
@ExceptionHandler注解用來捕獲並統一處理,減少代碼重復率和復雜度
@Resource和@Autowired注解都是用來實現依賴注入的
區別:
@Autowired注解是按by type自動注入;
@Resource注解默認按byName自動注入
@Resource注解有兩個重要屬性,分別是name和type
@RequestBody和@RequestParam的區別:
@RequestBody可以將body里面所有的json數據傳入后端,后端進行解析;
@RequestBody一般用戶處理application/json、application/xml等類型的數據;
@RequestBody不適用於GET請求,原因:GET請求中沒有HttpEntity
@RequestParam注解接受的參數是來自Http請求或url請求
@RequestParam注解可以接受簡單類型屬性,也可以接收對象類型
@RequestParam注解通常用來處理Content-Type為application/x-www-form-urlencoded編碼的內容(這里指form表單數據)
@RequestParam注解無法讀取json格式數據
Contnet-Type總結:
form表單請求數據類型(application/x-www-form-urlencoded),不可以用@RequestBody注解;可以使用@RequestParam注解
application/json:json字符串用@RequestBody注解
@Compent注解把普通pojo實體類實例化到Spring容器中
@MapperScan注解:遞歸掃描,比如掃描com.zy下的mapper包,例如:MapperScan("com.zy.Mapper")
@Entity:標明該類是一個實體類
@Table:當實體類與映射數據庫表名不同時,需要使用比如:@Table(name="user_home",shema="test")
@SpringBootTest:標明這個類是測試類
@Runwith:運行測試類,相當於運行器
@EnableCaching注解:是Springframework中注解驅動的緩存管理功能
@Controller和@RestController區別:
在對應的方法上,視圖解析器可以解析return的JSP、HTML頁面並且跳轉到相對應的頁面使用@Controller注解
若返回json字符串內容到頁面,則需要加@RestController注解
