搜尋
首頁後端開發php教程Spring Boot框架的知識點詳解

Spring Boot框架的知識點詳解

Aug 16, 2017 am 09:37 AM
bootspring知識點


摘要:1、Spring Boot的屬性設定檔1.1 Spring Boot的屬性設定檔的第一個形式使用properties設定文件,如下兩個屬性的意義是更改存取埠為8081,並且加了一個contextPath,可以理解為在網址列多加層位址。 server.port= ...

1、Spring Boot的屬性設定檔

        1.1 Spring Boot的屬性設定檔的第一個形式

            使用兩個為屬性的設定檔,如以下設定檔8081,並且加了一個contextPath,可以理解為在網址列多加層位址。

server.port=8081
server.context-path=/joyou

                右鍵點選DemoApplication.java -》Run As ——》Spring Boot App啟動程式

## 8081Spring Boot框架的知識點詳解

            瀏覽器存取效果如下。 Spring Boot框架的知識點詳解

    Spring Boot框架的知識點詳解

            補充:

  #  Spring Boot 提供的 SpringApplication 類別會搜尋並載入 application.properties 檔案來取得配置屬性值。 SpringApplication 類別會在下方位置搜尋該檔案:

#1.目前目錄的/config子目錄

2.目前目錄

#3.classpath 中的/config套件

4.classpath

上面的順序也表示了該位置上包含的屬性檔案的優先權。優先順序按照從高到低的順序排列。

#

可以透過spring.config.name這個key的設定屬性來指定不同的屬性檔名稱。也可以透過spring.config.location來新增額外的屬性檔案的搜尋路徑

         1.2 Spring Boot的屬性設定檔的第二個形式(建議)

                    使用yml方式配置,並在resources目錄下建立application.yml檔案。代碼如下。

server:  port: 8082  context-path: /joyou

                效果与1.1相同。

                  补充:                   

                相对于属性文件来说,YAML 是一个更好的配置文件格式。当有前缀的情况下,使用.yml格式的配置文件更简单。

注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: SpringBoot正确,SpringBoot就是错的。

YAML 在 Ruby on Rails 中得到了很好的應用。 YAML是JSON的一個超集,也是一種方便的定義層次配置資料的格式。它的基本語法規則如下:

  • 大小寫敏感

  • 使用縮排表示層級關係

  • ##只允許使用空白。

  • 縮排的空格數目不重要,只要相同層級的元素左側對齊即可

########################################### ##### 表示註釋,從這個字元一直到行尾,都會被解析器忽略。 ##############################

         1.3 application.properties裡面到底有哪些key是可設定的?

        在SpringBoot官網文件中給予了詳盡的設定以及說明。在Appendix A. Common application properties中:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties

        完整的application properties文件,有1183行。其中,屬性key有950個。當你看到如此龐大的配置,你一定會被嚇到。不過,在實際專案中,我們如果遵循Spring Boot的約定,通常不需要我們單獨指定太多配置。

            1.4 關於配置的優先順序

            Spring Boot提供了一個優先順序設定的機制來幫助我們從這個困境中走出來幫助我們從這個困境中走出來幫助我們從這個困境中走出來幫助我們從這個兩難的機制中走出來幫助我們從這個兩難。

            Spring Boot 所提供的設定優先順序較為複雜。按照優先順序從高到低的順序,具體的清單(從高到低)如下所示。

  •          #   1.且指令列參數(優先順序最高)。

  •             2.以 System.getProperties() 所取得的 Java 系統參數。

  •             3。作業系統環境變數。

  •             4.以 java:comp/env 所得的 JNDI 屬性。

  •             5.經由 RandomValuePropertySource 產生的random.*屬性。

  •             6.jar包外部的application-{profile}.properties或application.yml(帶spring.profile)設定文件,透過spring.config.location參數指定

  •             7.jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件

  •             8.jar包外部的application.properties或application.yml(不含spring.profile)設定檔

    ##########################################################################################################################################
  •             9.jar包內部的application.properties或application.yml(不帶spring.profile)配置文件

  •             10.應用Java配置類,且包含@Configuration註解的Java 類別,透過@PropertySource註解聲明的屬性檔案。

  •             11.以SpringApplication.setDefaultProperties宣告的預設屬性。

            如果Spring Boot在優先順序較高的位置找到了配置,那麼它就會忽略優先順序較低的配置。下面我們簡單來講講這些優先順序。 Spring Boot 的這個配置優先順序看似複雜,其實是很合理的。命令列參數的優先權之所以被設定為最高,是因為可以方便我們在測試或生產環境中快速地修改配置參數值,而不需要重新打包和部署應用。

            SpringApplication 類別預設會以「--」開頭的命令列參數轉換為應用程式中可使用的參數,如“--name=Alex” 會設定配置參數“name” 的值為“Alex”。

            如果不需要此功能,可透過SpringApplication.setAddCommandLineProperties(false)

#

停用解析命令列參數。

#2、Spring Boot自訂屬性

#

                2.1、 第一个自定义属性的例子  

                          在实际开发过程中,需要程序去配置文件中读取数据(如:URL,一些账号密码等),所以就需要我们来自定义属性,供程序读取。

                        首先在yml里自定一个属性,格式如下:

company: joyouemployee: 二十岁以后

                        在Java程序中取值,代码如下:

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${company}")
	private String company;	
	@Value("${employee}")
	private String employee;	

	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return company+"====="+employee;
	}
}

                使用浏览器访问效果如下

Spring Boot框架的知識點詳解

                2.2 在自訂屬性中呼叫其他屬性

#    2.2 在自訂屬性中呼叫其他屬性

#    2.2 在自訂屬性中呼叫其他屬性

#    2.2 在自訂屬性中調用其他屬性#######  ####                        ###yml檔案中的設定       
company: joyouemployee: 二十岁以后   
All: "公司: ${company} , 员工: ${employee}"

                    在JAVA程序中注入All属性

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${All}")	private String All;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)	public String HelloSpring(){		
			return All;
	}
}

            效果如图所示:

Spring Boot框架的知識點詳解

            2.3 对于多个属性如何一次调用

                    看了上面的例子后,会产生一个疑问,如果想一次调用10个、20个、50个属性值,难道我要在程序中注入50次值,使用50次注解吗? 为了解决这个疑问,Spring Boot 是这么解决的!

                    首先一个女孩,有身高、体重、罩杯等等属性,我们可以这样来写!

Girl: 
   High: 160CM   Weight: 80KG   CupSize: 30A

                    然后写一个类,这个类中提供Girl的属性,及Setter,Geter方法,需要使用两个注解:

  •                     @Component //如果没有这个注解,会报找不到Bean的错

  •                     @ConfigurationProperties(prefix="Girl") //找到以Girl开头的属性

Spring Boot框架的知識點詳解 

                    然后在java程序中注入Gril类

package com.example.demo;@RestControllerpublic class HelloSpringBoot {	@Autowired
	private Girl girl;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return girl.toString();
	}
}

                启动程序,刷新浏览器,效果如下:

Spring Boot框架的知識點詳解

3、多環境的屬性配置

#            3.1 生產與發展的不同情境

#############################################################3.1 ######                  將既然都這麼說了,那當然是不用的了。我們可以在開發時候就寫好兩套環境中對於屬性值不同需求的yml文件,然後在調用需要的yml文件就好了。 ###

                對生產環境Girl的屬性值如下:

Spring Boot框架的知識點詳解

#        #                我只需要在application.yml中調用不同的文件就好了,dev這個值是我開發和生產環境不同yml文件的後綴名(

注意看上面兩個圖文件的命名

Spring Boot框架的知識點詳解

Spring Boot框架的知識點詳解

    瀏覽器對應的結果

Spring Boot框架的知識點詳解

            第二種環境對應的配置

Spring Boot框架的知識點詳解

        瀏覽器對應的結果

Spring Boot框架的知識點詳解

#補一張到目前為止的專案目錄結構,幫助理解

Spring Boot框架的知識點詳解

以上是Spring Boot框架的知識點詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

PHP中的自動加載是什麼?PHP中的自動加載是什麼?Apr 30, 2025 pm 03:37 PM

自動加載PHP會在需要時自動加載類文件,從而通過減少內存使用和增強代碼組織來提高性能。最佳實踐包括使用PSR-4和有效組織代碼。

什麼是PHP流?什麼是PHP流?Apr 30, 2025 pm 03:36 PM

PHP流通過一致的API來統一資源諸如文件,網絡插座和壓縮格式之類的處理,從而使復雜性抽象並增強代碼靈活性和效率。

可以使用PHP上傳的文件的最大大小是多少?可以使用PHP上傳的文件的最大大小是多少?Apr 30, 2025 pm 03:35 PM

本文討論了在PHP中管理文件上傳大小的管理,重點是2MB的默認限制以及如何通過修改PHP.INI設置來增加它。

PHP中的無效類型是什麼?PHP中的無效類型是什麼?Apr 30, 2025 pm 03:34 PM

本文討論了PHP 7.1中引入的PHP中的無效類型,允許變量或參數為指定類型或NULL。它突出顯示了諸如提高可讀性,類型安全性和明確意圖的好處,並解釋瞭如何聲明

unset()和unlink()函數之間有什麼區別?unset()和unlink()函數之間有什麼區別?Apr 30, 2025 pm 03:33 PM

本文討論了unset()和unlink()功能在編程中的差異,重點關注其目的和用例。 unset()從內存中刪除變量,而unlink()從文件系統中刪除文件。兩者都對效率至關重要

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具