SpringBoot新手建立項目詳解

1、SpringBoot官網:springboot.io

2、準備:

JDK:

JAVA_HOME:jdk根目錄

path:jdk根目錄\bin

classpath:.;jdk根目錄\lib

maven:

首先需要下載maven,然後解壓縮

MAVEN_HOME:maven根目錄

path:maven根目錄\bin

配置maven本地倉庫:maven根目錄\conf\setting.xml: <localRepository>D:/mvnrep</localRepository>,首先創建一個mvnrep文件夾。

3、創建一個SpringBoot項目 (在spring.io在官網裏)

生成一個項目,然後解壓,然後只需要在開發工具中引入maven項目。

運行HelloWorldApplication,出現Spring標識和springboot版本號說明spring配好了。

4、目錄結構介紹

寫java代碼的:

resource文件夾下:

static:靜態資源(js css 圖片 音頻)

templates:模板文件(模板引擎freemarker,thymeleaf;默認不支持jsp)

application.properties:配置文件

(1)簡單創建一個接口

運行HelloWorldApplication,運行完後直接在頁面訪問helloWorld

以上項目發現和以前的區別:不用部署tomcat。

(2)配置文件application.properties裏面配置內容:

上面運行的時候項目用的默認端口8080,可以通過該配置文件修改端口號

修改完成後再執行HelloWorldApplication。

特點:(1)springboot內置了tomcat,並且不用打成war再執行

(2)可以在application.properties對端口號等服務端信息進行配置

(3)pom.xml文件

按住Ctrl查看父類

再點入父類,依賴的版本控制

各種各樣的版本號,springboot提供版本號,避免引入jar包時候出現版本衝突。

(4)在HelloWorldApplication類中,@SpringBootApplication註解:

springboot的主配置類。

按住Ctrl進去,該註解包含:

@SpingBootConfiguration,包含@Configuration,表示”配置類“(表示該類是一個配置類,在springboot中加上該註解會自動納入spring容器(一般是加了@Component))

@EnableAutoConfiguration

之前我們在寫程序時候會寫很多的配置文件,比如:spring.xml;mybatisConfig.xml;springmvc.xml,現在發現程序中沒有任何配置文件,就是因爲有@EnableAutoConfiguration這個註解,該註解可以使springboot自動配置。

@EnableAutoConfiguration下面的@AutoConfigurationPackage

包含引入的三方jar包

5、自動裝配原理

(1)在META-INF/spring.factories中幫我們自動裝配,每一個配置是否全部開啓,在什麼時候開啓

我們以一個HttpEncodingAutoConfiguration爲例

緊接着我們找到該包所在的位置:

(2)我們研究一下該類是社麼時候開啓?

打開此類,觀察該源碼發現,@Configuration:標識此類是一個配置類,將此類納入springioc容器

@EnableConfigurationProperties(HttpEncodingProperties.class),通過HttpEncodingProperties將編碼設置爲了UTF_8(即自動裝配爲UTF_8,在HttpEncodingProperties有一個prefix,如果我們要修改默認的編碼,我們就再配置文件application.properties中編寫spring.http.encoding.charset=ISO-8859-1)。

因此,配置文件中的東西都是某一個文件裏的prefix+屬性名。

@ConditionOnProperty當屬性滿足要求時,此條件成立:要求 如果沒有配置spring.http.encoding.enabled=xxx,則成立。

總結:a.即每一個XXAutoConfiguration都有很多條件@ConditionOnXX,當這些條件都滿足時,此配置自動裝配生效(比如以上的設置utf-8)。但是我們可以手工修改自動裝配:用XXXProperties文件中的prefix.屬性名=value。

b.全局配置文件(即application。properties)中的key,來源於某個配置文件中的prefix+屬性名

(3)如何知道spring boot開啓了哪些自動裝配,禁止了哪些自動裝配?

只需要在appliction.properties中加一句 debug=true,然後啓動項目,在console中,有一個positive matches 列表表示spring boot自動開啓裝配,然後把控制檯的運行結果複製到一個記事本中,搜索negative matches列表表示spring boot在此時並沒有啓用的自動裝配。

6、配置文件

(1)作用:spring boot自動配置(約定,比如端口號默認8080,編碼約定utf-8),可以使用配置文件對默認的配置進行修改。

(2)默認的全局配置文件:

application.properties:寫法是 k=v

application.yml:不是一個標記文檔 寫法是:(冒號後面的值前面必須有一個空格,在編寫時要注意縮進,通過垂直對齊指定層次關係)

k:空格v

server:

port: 8888

path: /a/b/c

xml:是一個標記文檔

<server>

<port>8888</port>

<path>/a/b/c</path>

</server> 表示根元素是server端口號是8888,這種寫法是標記文檔

(3)新建一個application.yml文件 直接new--->file-->application.yml

yml除了可以編寫配置文件,還可以給屬性綁定值:

如何將yml文件中的值綁定到實體類中:

測試(需要打印學生信息,需要再學生類中編寫toString方法):

注意:yml中默認可以不寫引號,雙引號會將其中的轉義符進行轉義

另一種寫法:

yml文件的值綁定到實體類另一個註解@Value,@Value註解與yml、properties配置文件沒關係了,它是再屬性上面一個一個註解。

鬆散寫法:比如nickName 它的鬆散寫法是nick-name

7、@PropertySource:默認會加載application.properties和application.yml文件中的數據,如果數據不在那兩個文件中,就要用@PropertySource引入非默認配置文件。

加載conf.properties文件中的數據,但是@PropertySource只能加載properties,不能加載yml

8、@ImportResource

spring boot自動裝配/自動配置

spring等配置文件 默認會被spring boot自動給配置好。

如果自己編寫spring等配置文件,spring boot能否識別? 默認 不能識別,如果需要識別,則需要通過@ImportResource來指定配置文件的路徑。

例子:

執行結果:

若想要spring boot識別spring.xml,在spring boot主配置類中添加@ImportResource註解

執行結果不報錯:

但是不推薦手寫spring等配置文件

配置:xml配置文件,用過註解配置。(編寫一個配置類)

spring boot推薦使用註解方式進行配置:寫類,@Configuration @Bean

例子:

在配置文件中bean中還有個屬性property,以前的編寫xml文件的形式如下,編寫一個Dao類

用配置文件的形式:

利用註解方式:

9、spring boot全局配置文件(AppCondig)中的佔位符表達式

常見的佔位符如下:

(1)隨機數:以上那幾種

(2)引用變量值:在yml中實際引用的是properties中的值

yml中如果name: ${student.user.name2:無名},如果${}中的值不存在,則用後面的無名這個值。

10、多環境的切換(profile)

比如開發一個環境,測試一個環境,實施一個環境,我們可以在這三個環境自由切換。

提供了很多種方式:

(1)通過properties

默認spring boot會讀取application.properties(端口號是8888)

如果有多個我們一般是application-環境名.properties

比如現在我們寫兩個,開發環境:application-dev.properties(8883);測試環境:application-test.properties(8884)。

運行我們可以看到application.properties是主配置文件

如果要選擇一個具體的環境,spring.profiles.active=環境名,比如切換到開發環境:

運行如下:

(2)通過yml

(3)動態切換環境

<1> a.在程序運行時候動態切換環境(通過編譯器)

--spring.profiles.active=環境名

b.將項目打包成jar包,然後再項目的target中找到該jar包,然後打開jar包的文件夾所在位置,然後在文件夾上輸入cmd

<2>通過jvm參數指定

-Dspring.profiles.active=環境名

11、spring boot能夠識別的配置文件的位置

a.內部配置文件

spring boot默認能夠讀取的application.properties和application.yml這兩個文件可以存在於以下四個地方:

在properties中配置項目名稱:

server.servlet.context-path=/boot 瀏覽器訪問的時候要加上這個項目名字然後再加上路徑

b.外部配置文件(用於補救,不用修改原項目,追加一個外部配置文件)

在program arguments中寫:--spring.config.location=外部文件的位置

如果項目我們已經打包成jar包,然後現在需要將裏面的端口號修改一下,不用解壓、重新打包,我們可以在外部寫一個配置文件,jar調用即可,使用命令行的方式。

c.項目運行參數(補救,如果大量配置文件需要改,用第二種方法,如果個別的,用這個)

比如修改端口號:

program arguments,直接寫--server.port=XXX 如果還有第二個參數需要改,就空格然後第二個參數。

總結:多個地方配置時,如果衝突,優先級:命令行參數(調用外部配置文件>項目運行參數)>內部文件(application.properties和application.yml,如果兩個也同時存在,則application.properties優先)

12、spring boot對日誌的支持

日誌框架:jboss-logging、logback、log4j、log4j2、slf4j、JUL.....

spring boot默認選用slf4j和logback,spring boot默認幫我們配置好了日誌,直接使用。

用slf4:

(1) 控制檯中只能輸出info、warn、error的信息,因爲spring boot的默認日誌級別是INFO ,我們也可以給它自定義日誌級別。

日誌級別:TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF

自定義日誌級別:(通過配置文件)

以下配置後,控制檯只能打印出warn以及warn以後的信息。

主配置文件:

日誌信息我們想要保存在一個文件裏面,我們可以通過配置文件進行設置:

springboot相對於項目的根目錄

我們也可以把日誌文件當到別的路徑下面:

絕對路徑

將日誌文件放到一個文件夾裏面:

默認的日誌名稱爲spring.log

(2)我們也可以修改日誌文件裏面的顯示格式

指定日誌顯示格式:

a.日誌顯示在console

後面部分是固定的:%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

%d:日期時間

%thread:線程名

%-5level:顯示日誌級別,-5表示從左顯示5個字符寬度

%logger{36}:設置日誌的長度

%msg:日誌消息

%n:回車

b.日誌顯示在文件中

logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

默認的日誌格式是在jar包中,相應包的xml文件中進行配置。‘

日誌的具體使用貴方:看官方文檔說明:首先進入spring.io官網--->spring boot--->learn-->logging

13、spring boot開發web項目(靜態資源 html css js)

---新建項目

WebMvcAutoConfiguration類源碼解讀。

14、引入模板引擎thymeleaf

就是將一個頁面分爲兩部分網頁+數據,如下圖,然後用model.調用方法進行頁面和數據的組合

引入thymeleaf:spring.io官網查詢thymeleaf依賴

15、使用thymeleaf

找到自動裝配的包,在它下面找到thymeleaf

查看它的默認配置

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章