javascript
【Spring框架家族】SpringBoot基本介绍
SpringBoot概述
SpringBoot提供了一種快速使用Spring的方式,基于約定優于配置的思想,可以讓開發人員不必在配置與邏輯業務之間進行思維的切換,全身心的投入到邏輯業務的代碼編寫中,從而大大提高了開發的效率,在一定程度上縮短了項目周期
Spring缺點
-
配置繁瑣
- 雖然Spring的組件代碼時輕量級的,但是它的配置卻是重量級的,一開始,Spring用Xml配置,而且是很多Xml配置
- Spring2.5引入了基于注解的組件掃描,這消除了大量針對應用程序自身組件顯示Xml配置
- Spring3.0引入了基于java的配置,這是一種類型安全的可重構配置方式,可以代替xml
- 所有這些配置都代表開發時的損耗,因為在思考Spring特性配置和解決業務問題之間需要進行思維切換,所以編寫配置擠占了編寫應用程序邏輯的時間,和所有框架一樣,Spring實用,但是要求回報也不少
-
依賴繁瑣
- 項目的依賴管理也是一件耗時耗力的事情,在環境搭建時,需要分析要導入哪些庫的坐標,而且還需要分析導入與之有依賴關系的其他庫的坐標,一旦選錯依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發進度
SpringBoot功能
-
自動配置
Spring Boot的自動配置是一個運行時(更準確地說,是應用程序啟動時)的過程,考慮了眾多因素,才決定Spring配置應該用哪個,不該用哪個。該過程是SpringBoot自動完成的。 -
起步依賴
起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。
簡單的說,起步依賴就是將具備某種功能的坐標打包到一起,并提供一些默認的功能。 -
輔助功能
提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置等。 -
注意:Spring Boot 并不是對 Spring 功能上的增強,而是提供了一種快速使用 Spring 的方式。
SpringBoot快速搭建項目
導入SpringBoot起步依賴
<!--springboot工程必須要繼承的父工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version></parent><dependencies><!--web開發的起步依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>定義Controller
@RestControllerpublic class HelloController {@RequestMapping("/hello")public String hello(){return " hello Spring Boot !";}}編寫引導類
/*** 引導類。 SpringBoot項目的入口,此類需和Controller在同一個包下*/// 告訴框架這是SpringBoot應用@SpringBootApplicationpublic class HelloApplication {public static void main(String[] args) {// SpringApplication一個Spring應用,run啟動命令SpringApplication.run(HelloApplication.class,args);}}SpringBoot起步依賴原理分析
- 在spring-boot-starter-parent中定義了各種技術的版本信息,組合了一套最優搭配的技術版本。
- 在各種starter中,定義了完成該功能需要的坐標合集,其中大部分版本信息來自于父工程。
- 我們的工程繼承parent,引入starter后,通過依賴傳遞,就可以簡單方便獲得需要的jar包,并且不會存在版本沖突等問題。
SpringBoot配置-配置文件分類
SpringBoot是基于約定的,所以很多配置都有默認值,但如果想使用自己的配置替換默認配置的話,就可以使用application.properties或者application.yml(application.yaml)進行配置。1. 默認配置文件名稱:application 2. 在同一級目錄下優先級為:properties>yml > yaml例如:配置內置Tomcat的端口* properties:server.port=8080* yml: server: port: 8080 -- 冒號后面必須加空格SpringBoot配置-yaml基本語法
YAML全稱是YAML Ain't Markup Language.YAML是一種直觀的能夠被電腦識別的數據序列化格式,并且容易被人類閱讀,容易和腳本語言交互,可以被支持YAML庫的不同編程語言程序導入 比如:C/C++,Ruby,Python,java,perl,C#,PHP等,YML文件時以數據為核心的,比傳統的XML更加簡潔 YAML文件擴展名可以使用.yml或者.yaml- 大小寫敏感
- 數據值前邊必須有空格,作為分隔符
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,只允許使用空格(各個系統 Tab對應的 空格數目可能不同,導致層次混亂)。
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
- ‘’#" 表示注釋,從這個字符一直到行尾,都會被解析器忽略。
對比:
# properties: server.port=8080 server.address=127.0.0.1# xml <server> <port>8080</port> <address>127.0.0.1</address> </server> # yml server: port: 8080 address: 127.0.0.1 name: abcSpringBoot配置-yaml數據格式
對象(map):鍵值對的集合。
person: name: zhangsan# 行內寫法,冒號后面都要有空格person: {name: zhangsan}數組:一組按次序排列的值
address:# 使用 “- ”表示數組每個元素- beijing- shanghai# 行內寫法address: [beijing,shanghai]純量:單個的、不可再分的值
msg1: 'hello \n world' # 單引忽略轉義字符msg2: "hello \n world" # 雙引識別轉義字符參數引用
name: 趙麗穎person:name: ${name} # 引用上邊定義的name值SpringBoot配置-獲取數據
@Value
#獲取普通配置@Value("${name}") // ${寫的是配置文件中的key}private String name;#獲取對象屬性@Value("${person.name}")private String name2;#獲取數組@Value("${address[0]}")private String address1;#獲取純量@Value("${msg1}")private String msg1;Evironment
@Autowiredprivate Environment env;System.out.println(env.getProperty("person.name"));System.out.println(env.getProperty("address[0]"));兩種區別:
- @Value是直接通過key獲取值,在多個方法都可以使用
- Evironment對象通過調用getProperty(“key”)也可以獲取值,但是如果在多個方法中調用,則需要多次調用getProperty(“key”)
@ConfigurationProperties 作用:可以將javaBean與配置文件中的內容進行綁定
注意:prefix一定要寫
@Component@ConfigurationProperties(prefix = "person")public class Person {private String name;private int age;private String[] address;補充:
實體類屬性標記@Validated,自動校驗
屬性報價NotNull非空
SpringBoot配置-profile
在開發Spring Boot應用時,通常同一套程序會被安裝到不同環境,比如:開發、測試、生產等。其中數據庫地址、服務器端口等等配置都不同,如果每次打包時,都要修改配置文件,那么非常麻煩。profile功能就是來進行動態配置切換的。
- profile是用來完成不同環境下,配置動態切換功能的。
- profile配置方式:
- 多profile文件方式:提供多個配置文件,每個代表一種環境。有一個主配置文件
application-dev.properties/yml 開發環境
application-test.properties/yml 測試環境
application-pro.properties/yml 生產環境 - yml多文檔方式
在yml中使用 - - - 分隔不同配置,兩個 - - - 之就是一個獨立文檔
使用spring.profiles屬性為文檔取名
- 多profile文件方式:提供多個配置文件,每個代表一種環境。有一個主配置文件
- profile激活方式
配置文件: 再配置文件中配置:spring.profiles.active=dev
虛擬機參數:在VM options 指定:-Dspring.profiles.active=dev
命令行參數:java –jar xxx.jar --spring.profiles.active=dev
SpringBoot配置-項目內部配置文件加載順序
加載順序為上文的排列順序,高優先級配置的屬性會生效
- file:./config/:當前項目下的/config目錄下
- file:./ :當前項目的根目錄
- classpath:/config/:classpath的/config目錄
- classpath:/ :classpath的根目錄
SpringBoot配置-項目外部配置加載順序
外部配置文件的使用是為了對內部文件的配合
1.命令行
java -jar app.jar --name="Spring“ --server.port=90002.指定配置文件位置
java -jar myproject.jar --spring.config.location=e://application.properties3.外部不帶profile的properties文件
classpath:/config/application.propertiesclasspath:/application.properties總結
以上是生活随笔為你收集整理的【Spring框架家族】SpringBoot基本介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【十大经典排序算法】java实现--插入
- 下一篇: 【Spring框架家族】SpringBo