SpringBoot詳解


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所具備的特征:

  1. 可以創建獨立的Spring應用程序,並且基於其Maven或者Gradle插件,可以創建可執行的JARs和WARs;

  2. 內嵌Tomcat或Jetty等Servlet容器;

  3. 提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;

  4. 盡可能自動配置Spring容器;

  5. 提供准備好的特性,如指標、健康檢查和外部化配置;

  6. 絕對沒有代碼生成,不需要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注解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM