SpringBoot框架(由淺入深,深度解讀)

1、入門java

1.簡介web

Spring Boot是一個簡化Spring開發的框架。用來監護spring應用開發,約定大於配置,去繁就簡,just run 就能建立一個獨立的,產品級的應用。spring

咱們在使用Spring Boot時只須要配置相應的Spring Boot就能夠用全部的Spring組件,簡單的說,spring boot就是整合了不少優秀的框架,不用咱們本身手動的去寫一堆xml配置而後進行配置。從本質上來講,Spring Boot就是Spring,它作了那些沒有它你也會去作的Spring Bean配置。數據庫

2.優勢json

3.單體應用與微服務api

單體應用是把全部的應用模塊都寫在一個應用中,致使項目越寫越大,模塊之間的耦合度也會愈來愈高。微服務是一種架構風格,用微服務能夠將應用的模塊單獨部署,對不一樣的模塊進行不一樣的管理操做,不一樣的模塊生成小型服務,每一個功能元素最後均可以成爲一個能夠獨立替換、獨立升級的功能單元,各個小型服務之間經過http進行通訊。數組

4.Spring Boot的核心特色tomcat

·微服務:springboot

使用Spring Boot能夠生成獨立的微服務功能單元服務器

·自動配置:

針對不少Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置

·起步依賴:

告訴Spring Boot須要什麼功能,它就能引入須要的庫。

·命令行界面:

這是Spring Boot的可選特性,藉此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。

·Actuator:

讓你可以深刻運行中的Spring Boot應用程序。

5.簡單案例:使用maven建立HelloWorld項目

第一步:首先要配置Spring Boot 依賴

<parent><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>Spring Boot的版本仲裁中心;之後咱們導入依賴默認是不須要寫版本。(沒有在dependencies裏面管理的依賴天然須要聲明版本號) <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>

spring-boot-starter-web:

spring-boot-starter:spring-boot場景啓動器。幫咱們導入了web模塊正常運行所依賴的組件。

Spring Boot將全部的功能場景都抽取出來,作成一個個的starters(啓動器),只須要在項目裏面引入這些starter 相關場景的全部依賴都會導入進來。要用什麼功能就導入什麼場景的啓動器

·第二步:新建包結構以下圖

·第三步:編輯相對應的類代碼

·HelloController.java

@RestController//標註是一個Controller類 而且支持json數據格式輸出public class HelloController { //經過 http://localhost:8080/sayHello訪問該方法 @RequestMapping("/sayHello") public String hello(){ return "hello world"; } }

·MainTest.java

@SpringBootApplication//表明springboot的啓動類 用來標註主程序類 說明是一個springboot應用public class MainTest { public static void main(String[] args) { //將springboot應用驅動起來 SpringApplication.run(MainTest.class); } }

[生辰八字起名字][1]

·第四步:運行main方法

運行main方法,等到自動部署服務器完成,而後經過地址就能夠訪問到相應的數據。

6.案例解析---相應的問題

·爲何只配置一個Spring Boot依賴:

·入口類的@SpringBootApplication註解:

·AutoConfigurationPackage:

自動掃描問題@ SpringBootApplication標記的主類,在主類所在包或者所在的子包下面找相應的控制類,而後根據相應的註解自動配置相應的項目所需的bean

7.如何快速新建Spring Boot項目

注意建立Spring Boot時注意網絡鏈接的問題,保持網絡暢通。點擊New File,選擇Project選擇Spring Initializr,加載完成後查看相應的JDK版本是否合適,確保後點擊next

設置項目的GroupID和Artifact。選擇相應的語言和要生成的jar包或者war包以及JDK版本

勾選建立項目所須要的依賴,好比數據庫,web等依賴,這裏咱們簡單的介紹,不作具體的詳解,就選擇一個web依賴

選擇完畢後,點擊finish完成新建項目等待項目新建完成。

建立完畢後,保持建立的結構是這個形式便可。

建立項目完畢後,根據上面的案例簡單的建立一個項目測試一下,測試經過便可。

8.Spring Boot的配置文件

使用Spring Boot配置文件首先須要有JavaBean類,而後才能在相應的配置文件中爲javabean中的屬性賦值

想要向JavaBean類中賦值,須要在javabean的類中添加相應的註解@Component和@ConfigurationProperties(prefix = "person")。@Component將類添加進容器,@ConfigurationProperties配置文件中的數據注入到類中

· Dog.java

public class Dog {private String name; private String age;}

· Person.java

/**

  • 將配置文件中配置的每個屬性的值,映射到這個組件中
  • @ConfigurationProperties:告訴SpringBoot將本類中的全部屬性和配置文件中相關的配置進行綁定;
  • prefix = "person":配置文件中哪一個下面的全部屬性進行一一映射
  • 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;

**/

@Component@ConfigurationProperties(prefix = "person") public class Person { private String name; private Integer age; private Boolean sex; private Date birthday; private List<String> list; private Map<String,Object> map;private Dog dog;}

·配置文件:

配置文件名是固定的 application.properties 或application.yml

·配置文件的做用:

修改SpringBoot自動配置的默認值;SpringBoot在底層都給咱們自動配置好。

·application.properties詳解

示例:

設置端口號爲9999 server.port=9999

在application.properties中配置相應的屬性以後,從新運行項目,發現服務器的端口啓動號變成了9999,證實該段代碼能夠修改默認的8080端口。

· application.properties

person.age=80 person.birthday=2019/02/5 person.list=a,b,c person.name=旺財 person.sex=false person.map.v1=k1 person.map.v2=k2 person.dog.name=jjj person.dog.age=6

注意:在使用application.properties文件向配置文件可能會出現亂碼,注意改變編碼格式爲UTF-8

·application.yml詳解

·1.YAML文件詳解

(1) YAML文件定義:

YAML(YAML Ain’t Market Language)語言文件,以數據爲中心,比json、XML等文件更加適合作配置文件

(2) YAML文件的基本語法:

  1. 使用縮進表示層級關係
  2. 縮進時不容許使用Tab鍵,只容許使用空格
  3. 縮進的空格的數目不重要,只要相同層級的元素左對齊便可
  4. 大小寫敏感

(3) YAML的值的寫法:

  1. k: v:字面直接來寫;
  2. 字符串默認不用加上單引號或者雙引號;
  3. "":雙引號;不會轉義字符串裏面的特殊字符;特殊字符會做爲自己想表示的意思
  4. name: "zhangsan n lisi":輸出;zhangsan 換行 lisi
  5. '':單引號;會轉義特殊字符,特殊字符終只是一個普通的字符串數據
  6. name: ‘zhangsan n lisi’:輸出;zhangsan n lisi

(4) YAML支持三種數據格式:對象,數組,基本數據類型

·2.YAML的經常使用寫法示例

· application.xml

person:name: 張三 age: 20 sex: false birthday: 2019/01/11 list: - a - b map: -k1: v1 -k2: v2 -dog: {name: ww,age: 12} dog: name: ww age: 2

相應的配置文件和類編寫完畢後,編輯測試類,運行,測試經過。

9.Spring Boot中的特殊註解

這裏就講解幾個經常使用的註解吧,畢竟時間有限,你們能夠到網上查一下,具體的註解

@SpringBootApplication註解分析

@SpringBootApplication是一個複合註解,包括@ComponentScan,@SpringBootConfiguration,@EnableAutoConfiguration。

1.@SpringBootConfiguration繼承自@Configuration,兩者功能也一致,標註當前類是配置類,並會將當前類內聲明的一個或多個以@Bean註解標記的方法的實例歸入到srping容器中,而且實例名就是方法名。

2.@EnableAutoConfiguration的做用啓動自動的配置。

3.@EnableAutoConfiguration註解的意思就是Springboot根據你添加的jar包來配置你項目的默認配置,好比根據spring-boot-starter-web,來判斷你的項目是否須要添加了webmvc和tomcat,就會自動的幫你配置web項目中所須要的默認配置。在下面博客會具體分析這個註解,快速入門的demo實際沒有用到該註解。

4.@ComponentScan,掃描當前包及其子包下被@Component,@Controller,@Service,@Repository註解標記的類並歸入到spring容器中進行管理。是之前的<context:component-scan>(之前使用在xml中使用的標籤,用來掃描包配置的平行支持)。因此本demo中的User爲什麼會被spring容器管理

@ResponseBody

表示該方法的返回結果直接寫入HTTP response body中,通常在異步獲取數據時使用,用於構建RESTful的api。在使用@RequestMapping後,返回值一般解析爲跳轉路徑,加上@esponsebody後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP response body中。好比異步獲取json數據,加上@Responsebody後,會直接返回json數據。該註解通常會配合@RequestMapping一塊兒使用

@Controller

用於定義控制器類,在spring項目中由控制器負責將用戶發來的URL請求轉發到對應的服務接口(service層),通常這個註解在類中,一般方法須要配合註解@RequestMapping

@RestController

用於標註控制層組件(如struts中的action),@ResponseBody和@Controller的合集。

@Service

通常用於修飾service層的組件

@Repository

使用@Repository註解能夠確保DAO或者repositories提供異常轉譯,這個註解修飾的DAO或者repositories類會被ComponetScan發現並配置,同時也不須要爲它們提供XML配置項。

@Bean

用@Bean標註方法等價於XML中配置的bean。

@Value

注入Spring boot application.properties配置的屬性的值。

相關文章
相關標籤/搜索