SpringBoot unit 2th,關於spring4的那些事,面試重點

image.png

image.png

第二單元SpringBoot配置
1【授課重點】
1)Application.properties
2)Application.yml
3)自定義配置文件
4)引入xml配置
5)@Configuration
2【考覈要求】
1)SpringBoot有配置文件的項目
2)Configuration和Bean
3)樹形配置文件
4)傳統的配置文件
5)Xml方式配置Bean
3【教學內容】
3.1課程導入
一、SpringBoot有靈活的配置方式
二、實際開發中選擇一種簡單使用的配置方式便可
三、兼容傳統的spring配置方式
3.2建立項目html

pom.xml 文件的內容以下所示java

image.png

image.png

Spring Boot提供了許多Starters來在類路徑中添加jar。 例如,要編寫Rest Endpoint,須要在類路徑中添加spring-boot-starter-web依賴項。請遵照下面顯示的代碼以便更好地理解 -
【編寫web項目必須有的starter web】web

image.png

3.2.1Main方法
Main方法應該是編寫Spring Boot Application類。 該類應使用@SpringBootApplication進行註釋。這是啓動Spring啓動應用程序的入口點。以在src/java/main目錄下找到主類文件。
在此示例中,主類文件位於src/java/main目錄中,其默認包爲com.yiibai.demo。 請觀察此處顯示的代碼以便更好地理解 -
【啓動類有兩個註解: @SpringBootApplication, @SpringApplication 】
image.png面試

3.2.2編寫一個Rest端點
【就是寫一個helloworld】
要在Spring Boot Application主類文件自己中編寫一個簡單的Hello World Rest 端點,請按照如下步驟操做 -
首先,在類的頂部添加@RestController註釋。
使用@RequestMapping註釋編寫Request URI方法。
Request URI方法應該返回Hello World字符串。
如今,Spring Boot Application類文件將以下面的代碼所示 -ajax

image.png

3.3建立一個可執行的JARredis

建立一個可執行的JAR文件,在命令提示符下使用Maven和Gradle命令運行Spring Boot應用程序,以下所示 -
使用maven命令mvn clean install,以下所示 -spring

image.png

執行命令後,能夠在命令提示符下看到 BUILD SUCCESS 的消息,以下所示 -json

image.png

用Java運行Hello World
建立可執行JAR文件後,能夠在如下目錄中找到它。對於Maven,能夠在目標目錄下找到JAR文件,以下所示segmentfault

image.png

如今,使用命令java -jar <JARFILE>運行JAR文件。 請注意,在上面的示例中,JAR文件名爲demo-0.0.1-SNAPSHOT.jar瀏覽器

image.png

運行jar文件後,能夠在控制檯窗口中看到輸出,以下所示

image.png

如今,看一下控制檯,Tomcat在端口8080(http)上啓動。 如今,轉到Web瀏覽器並點擊URL => http://localhost:8080/

image.png

3.4SpringBoot構建系統
在Spring Boot中,選擇構建系統是一項重要任務。建議使用Maven或Gradle,由於它們能夠爲依賴關係管理提供良好的支持。 Spring不支持其餘構建系統。
3.5依賴管理
Spring Boot團隊提供了一個依賴項列表,以支持每一個版本的Spring Boot版本。無需在構建配置文件中提供依賴項版本。Spring Boot會根據發行版自動配置依賴項版本。 請記住,升級Spring Boot版本時,依賴項也會自動升級。
注 - 若是要指定依賴項的版本,能夠在配置文件中指定它。 可是,Spring Boot團隊強烈建議不要指定依賴項的版本。
3.6Maven依賴
對於Maven配置,應該繼承Spring Boot Starter父項目來管理Spring Boot Starters依賴項。 所以只需在pom.xml 文件中繼承啓動父級,以下所示。

image.png

【如今用的比較多的是1.5.?】
【16年springcloud在全球流行起來,中國也愈來愈的使用springboot,如今新項目幾乎都是springboot】
【最新的版本已是2.?,大多數的配置在1.5和2.0是同樣的,但也有一些配置不同,好比redis】
【本次選用1.5,是由於有kafka和elasticSearch的部分。1.5的資料比較全】
【elasticSearch的版本升級很是快,boot不支持其最高版本】

應該指定SpringBoot父 Starter依賴項的版本號。 而後,對於其餘啓動器依賴項,不須要指定Spring Boot版本號。

image.png

3.7SpringBoot代碼結構
Spring Boot沒有任何代碼佈局可供使用。可是,有一些最佳實踐能夠幫助咱們簡化代碼佈局,本章中將詳細討論它們。
3.8默認包
沒有任何包聲明的類被視爲默認包。 請注意,一般不建議使用默認包聲明。 使用默認包時,Spring Boot將致使自動配置或組件掃描出現故障等問題。
注 - Java推薦的包聲明命名約定是反向域名。 例如 - com.bw
3.9典型佈局
Spring Boot應用程序的典型佈局以下圖所示 -

image.png

Application.java文件應該聲明main方法和@SpringBootApplication。 請遵照下面給出的代碼以便更好地理解

image.png

3.10SpringBoot Bean和依賴注入

在Spring Boot中,可使用Spring Framework來定義bean及其依賴注入。 @ComponentScan註釋用於查找bean以及使用@Autowired註釋注入的相應內容。
若是遵循Spring Boot典型佈局,則無需爲@ComponentScan註釋指定任何參數。 全部組件類文件都自動註冊到Spring Beans。
如下示例提供了有關自動鏈接Rest Template對象併爲其建立Bean代碼片斷 -
https://www.yiibai.com/spring...
image.png

如下代碼顯示主Spring Boot Application類文件中自動鏈接的Rest Template對象和Bean建立對象的代碼

image.png

3.11Spring Boot應用程序屬性

應用程序屬性用於支持在不一樣的環境中工做。 在本章中,將學習如何配置和指定Spring Boot應用程序的屬性。
命令行屬性

Spring Boot應用程序將命令行屬性轉換爲Spring Boot環境屬性。命令行屬性優先於其餘屬性源。 默認狀況下,Spring Boot使用8080端口號來啓動Tomcat。接下來將學習如何使用命令行屬性更改端口號。
步驟1 - 建立可執行JAR文件後,使用命令java -jar <JARFILE>運行它。
步驟2 - 使用下面給出的屏幕截圖中給出的命令,使用命令行屬性更改Spring Boot應用程序的端口號。

image.png

注 - 可使用分隔符 - 提供多個應用程序屬性。

3.12屬性文件

屬性(properties)文件用於在單個文件中保留N個屬性,以便在不一樣的環境中運行應用程序。 在Spring Boot中,屬性保存在類路徑下的application.properties文件中。
application.properties文件位於src/main/resources目錄中。示例application.properties文件的代碼以下

image.png

請注意,在上面顯示的代碼中,Spring Boot應用程序demoservice在端口9090上啓動。
3.13YAML文件
Spring Boot支持基於YAML的屬性配置來運行應用程序。可使用application.yml文件代替application.properties。 此YAML文件也應保留在類路徑中。 application.yml文件示例以下。
image.png

3.14外部化屬性
能夠將屬性保存在不一樣的位置或路徑中,而不是將屬性文件保存在類路徑下。 在運行JAR文件時,能夠指定屬性文件路徑。 可使用如下命令在運行JAR時指定屬性文件的位置

image.png
image.png

使用@Value註解
@Value註釋用於讀取Java代碼中的環境或應用程序屬性值。讀取屬性值的語法以下所示
@Value("${property_key_name}")
請看下面的示例,它顯示瞭如何使用@Value批註讀取Java變量中的spring.application.name屬性值的語法。
@Value("${spring.application.name}")
請遵照下面給出的代碼以便更好地理解
image.png

3.15Spring Boot活動配置文件
Spring Boot支持基於Spring活動配置文件的不一樣屬性。 例如,能夠保留兩個單獨的文件進行開發和生產,以運行Spring Boot應用程序。
application.properties中的Spring活動配置文件
下面來了解如何在application.properties 中使用Spring活動配置文件。 默認狀況下,application.屬性將用於運行Spring Boot應用程序。 若是想使用基於配置文件的屬性,能夠爲每一個配置文件保留單獨的屬性文件,以下所示 -
文件:application.properties
image.png

文件:application-dev.properties
image.png

文件:application-prod.properties
image.png

在運行JAR文件時,須要根據每一個屬性文件指定spring活動配置文件。 默認狀況下,Spring Boot應用程序使用application.properties 文件。 設置Spring活動文件的命令以下所示
image.png

在控制檯日誌中看到活動的配置文件名稱,以下所示
image.png

如今,Tomcat已經開始使用端口9090(http),以下所示
image.png

能夠設置生產活動配置文件,以下所示
image.png

在控制檯日誌中看到活動的配置文件名稱,以下所示
image.png

如今,Tomcat開始使用4431端口(http),以下所示
image.png

application.yml的Spring活動配置文件
下面來了解如何爲application.yml保留Spring活動配置文件。能夠將Spring活動配置文件屬性保留在單個application.yml文件中。無需使用像application.properties這樣的單獨文件。
如下是將Spring活動配置文件保留在application.yml文件中的示例代碼。 請注意,分隔符(---)用於分隔application.yml文件中的每一個配置文件。
image.png

命令設置開發活動配置文件以下
image.png

在控制檯日誌中看到活動的配置文件名稱,以下所示
image.png

如今,Tomcat開始使用端口9090(http),以下所示
image.png

設置生產活動配置文件的命令以下
image.png

在控制檯日誌中看到活動的配置文件名稱,以下所示

image.png
image.png

3.16Spring Boot Code Demo 這部分教學的重點部分,須要教師演示一遍,學生須要練習3編以上才能掌握,第一週的週考重點內容
3.16.1【boot3th part, following part】
Spring 傳統xml的方式加入到boot項目中的方法
@ImportResource
image.png

分析
--爲何要有Configuration註解
--Ssm項目中spring.Xml里加入另外一個xml文件,該如何配置?
--在dubbo項目裏,常常加入consumer.xml和provider.xml,使用的是什麼方式加載這些xml的?
--ssm項目裏<import resource=」mybatis.xml」></import>是什麼意思?
--ssm項目是如何啓動的,和servlet+jdbc的項目有什麼區別?
--ssm web項目如何加載spring和springmvc的?
--web項目是直接管理mybatis的嗎?
image.png

這樣spring IOC會讀取這個xml文件,而後生成其對應的對象,testService2和testService3
測試代碼以下:
image.png

在Boot項目中通常不採用這種方式,但有的項目會是ssm和boot一塊兒使用,那麼這種方式就會常用,boot項目給使用xml的傳統方式,預留了一個【@ImportResource註解類】

如下這種注入會不會報錯?會報什麼錯?
image.png

總結:本節須要對spring4 IOC/DI有深入的理解

推薦spring in Action電子書

3.16.2 【boot5th @Value註解】
導入:
@Value是很是經常使用的註解,好比在使用RedisUtil工具類的時候。
咱們須要讀取一些咱們本身定義的配置文件的信息,好比在頁面有一個選擇公司的下拉框,我但願把公司的信息寫在properties裏,那麼咱們須要在controller和service裏讀取出這些信息。
Example as below:
Companyname: neu
Companyname2: bw
Companyname3: toshiba
在頁面作一個下拉框,顯示公司的信息

使用起來也很是簡單,首先搭建一個空的springboot項目
在yml文件裏增長配置信息,以下
image.png

而後編寫類ConfigValueTYml以下圖
image.png

生成setter和getter方法
測試代碼以下:
image.png

【context是spring4容器】
Result as below:
image.png

【思考題:如何把信息輸出到頁面上?】
【@value是boot的註解嗎?】
【在controller和service裏如何注入DI ConfigValueYml對象?】

先搭建一個空boot項目:
3.16.3【@ConfigurationProperties註解】
當項目的配置文件的內容不是不少時,能夠方便的使用@value註解,可是當項目裏的配置文件的內容很是多時,更多的時候,咱們採用的是單獨創建一個或多個properties文件
好比咱們能夠在resources裏創建一個config.properties
Pic as below
image.png

編寫ConfigYml類,讀取config.properties
image.png

增長setter和getter方法
prefix表明前綴
PropertySource表明讀取classpath下的config.properties文件
實際項目若是配置文件的內容很是很是多,那麼只能採用這總方式,很是方便

Test code as below
image.png

【在controller裏和service裏和jsp頁面裏如何使用?】
【測試顯示結果?】

答案:
image.png

3.16.4【@Scheduled spring定時器】
導入:
定時器也是一個很是經常使用的功能,並且是面試常問的技術點
須要你們重點掌握,這個知識點很小,以前你們學習過spring,應該使用過

搭建boot空項目,as unit One method
添加com.zz.unit package
新建 ConfigSchedule類 as below

每8秒運行一次

啓動類上@EnableScheduling註解

運行結果以下

3.16.5【boot6th 下servlet使用】

導入:
傳統的servlet在boot項目下如何使用?

新建一個空boot項目

UrlPatterns是訪問地址

--response.getWrite().write(「ajax json」);是什麼?面試常常問
--json如何使用

啓動類:

必須用@ServletComponentScan掃描servlet所在的包
由於WebServlet不是spring的註解,是java ee的註解

總結:因此java ee的註解都要用ServletComponentScan掃描,不然在boot項目下不生效
那麼Spring的註解爲何不用掃描?好比@Service,@Component,@Controller等等,

運行boot項目,看servlet的效果
Effect as below
3.16.6【boot6th 默認log】
Log日誌是咱們日考和週考,月考都常考的
Code as below

Pom不用任何改變
使用log demo as below

使用起來很是簡單
運行結果

Properties code as below

logging.level.root=info,設置日誌的級別爲info,小於info級別的全部日誌均可以顯示
Logging的幾種級別 info, debug, error等
Logging.File=日誌保存的位置
本案例在d盤下xxx.Log文件裏有日誌信息。

3.16.7【boot7th 不使用boot項目默認的日誌功能】
通常不經常使用,boot項目的特色就是簡化配置文件的內容

在application.properties裏

Logback.xml文件內容以下

--Pattern裏是日誌的格式--咱們學習的是boot項目如何使用log,並非日誌的配置文件的使用,因此因爲時間有限,這裏對配置文件不作過多的介紹了Summary,第二單元的內容比較多,若是spring基礎很差的同窗,一檔要反覆的練習上課演示的代碼。跟着錄屏,反覆的敲3遍以上才能掌握。

相關文章
相關標籤/搜索