Spring Boot教學
Spring Boot是什麼?
Spring Boot簡介
Spring Boot主要目標
Spring Boot快速入門
新項目爲什麼需要Spring Boot?
Spring Boot引導過程
Spring Boot核心和限制
Spring Boot Tomcat部署
Spring Boot優點和缺點
Spring Boot構建系統
Spring Boot入門
Spring Boot代碼結構
Spring Boot安裝
Spring Boot Bean和依賴注入
Spring Boot應用程序開發入門
Spring Boot運行器(Runner)
Spring Boot JSP應用實例
Spring Boot應用程序屬性
Spring Boot將WAR文件部署到Tomcat
Spring Boot日誌
Spring Boot Hello World(Thymeleaf)示例
Spring Boot構建RESTful Web服務
Spring Boot非web應用程序實例
Spring Boot異常處理
Spring Boot @ConfigurationProperties實例
Spring Boot攔截器
Spring Boot SLF4J日誌實例
Spring Boot Servlet過濾器
Spring Boot Ajax實例
Spring Boot Tomcat端口號
Spring Boot文件上傳示例(Ajax和REST)
Spring Boot Rest模板
Spring Boot文件上傳示例
Spring Boot文件處理
Spring Boot服務組件
Spring Boot Thymeleaf示例
Spring Boot使用RESTful Web服務
Spring Boot CORS支持
Spring Boot國際化
Spring Boot調度
Spring Boot啓用HTTPS
Spring Boot Eureka服務器
Spring Boost Eureka服務註冊
Spring Boot Zuul代理服務器和路由
Spring Boot雲配置服務器
Spring Boot雲配置客戶端
Spring Boot Actuator
Spring Boot管理服務器
Spring Boot管理客戶端
Spring Boot啓用Swagger2
Spring Boot創建Docker鏡像
Spring Boot跟蹤微服務日誌
Spring Boot Flyway數據庫
Spring Boot發送電子郵件
Spring Boot Hystrix
Spring Boot Web Socket
Spring Boot批量服務
Spring Boot Apache Kafka
Spring Boot單元測試用例
Spring Boot Rest控制器單元測試
Spring Boot數據庫源(連接數據庫)
Spring Boot保護Web應用程序

Spring Boot應用程序屬性

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

命令行屬性

Spring Boot應用程序將命令行屬性轉換爲Spring Boot環境屬性。命令行屬性優先於其他屬性源。 默認情況下,Spring Boot使用8080端口號來啓動Tomcat。接下來將學習如何使用命令行屬性更改端口號。

步驟1 - 創建可執行JAR文件後,使用命令java -jar <JARFILE>運行它。
步驟2 - 使用下面給出的屏幕截圖中給出的命令,使用命令行屬性更改Spring Boot應用程序的端口號。

Spring

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

屬性文件

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

server.port = 9090
spring.application.name = demoservice

請注意,在上面顯示的代碼中,Spring Boot應用程序demoservice在端口9090上啓動。

YAML文件

Spring Boot支持基於YAML的屬性配置來運行應用程序。可以使用application.yml文件代替application.properties。 此YAML文件也應保留在類路徑中。 application.yml文件示例如下 -

spring:
   application:
      name: demoservice
   server:
port: 9090

外部化屬性

可以將屬性保存在不同的位置或路徑中,而不是將屬性文件保存在類路徑下。 在運行JAR文件時,可以指定屬性文件路徑。 可以使用以下命令在運行JAR時指定屬性文件的位置 -

-Dspring.config.location = C:\\application.properties

Spring

使用@Value註解

[@Value](https://github.com/Value "@Value")註釋用於讀取Java代碼中的環境或應用程序屬性值。讀取屬性值的語法如下所示 -

@Value("${property_key_name}")

請看下面的示例,它顯示瞭如何使用[@Value](https://github.com/Value "@Value")批註讀取Java變量中的spring.application.name屬性值的語法。

@Value("${spring.application.name}")

請遵守下面給出的代碼以便更好地理解 -

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
   @Value("${spring.application.name}")
   private String name;
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @RequestMapping(value = "/")
   public String name() {
      return name;
   }
}

注 - 如果在運行應用程序時未找到該屬性,則Spring Boot將拋出非法參數異常,因爲無法在值${spring.application.name}中解析佔位符'spring.application.name'
要解決佔位符問題,可以使用下面給出的thr語法設置屬性的默認值 -

@Value("${property_key_name:default_value}")
@Value("${spring.application.name:demoservice}")

Spring Boot活動配置文件

Spring Boot支持基於Spring活動配置文件的不同屬性。 例如,可以保留兩個單獨的文件進行開發和生產,以運行Spring Boot應用程序。

application.properties中的Spring活動配置文件

下面來了解如何在application.properties 中使用Spring活動配置文件。 默認情況下,application.屬性將用於運行Spring Boot應用程序。 如果想使用基於配置文件的屬性,可以爲每個配置文件保留單獨的屬性文件,如下所示 -

文件:application.properties -

server.port = 8080
spring.application.name = demoservice

文件:application-dev.properties -

server.port = 9090
spring.application.name = demoservice

文件:application-prod.properties -

server.port = 4431
spring.application.name = demoservice

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

Spring

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

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.yiibai.demo.DemoApplication  :
   The following profiles are active: dev

現在,Tomcat已經開始使用端口9090(http),如下所示 -

2017-11-26 08:13:20.185  INFO 14028 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

可以設置生產活動配置文件,如下所示 -
Spring

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

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.yiibai.demo.DemoApplication  :
   The following profiles are active: prod

現在,Tomcat開始使用4431端口(http),如下所示 -

2017-11-26 08:13:20.185  INFO 14028 --- [          
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)

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

spring:
   application:
      name: demoservice
server:
   port: 8080

---
spring:
   profiles: dev
   application:
      name: demoservice
server:
   port: 9090

---
spring: 
   profiles: prod
   application:
      name: demoservice
server: 
   port: 4431

命令設置開發活動配置文件如下 -

Spring

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

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.yiibai.demo.DemoApplication  : 
   The following profiles are active: dev

現在,Tomcat開始使用端口9090(http),如下所示 -

2017-11-26 08:41:46.650  INFO 14104 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

設置生產活動配置文件的命令如下 -

Spring

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

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.yiibai.demo.DemoApplication  : 
   The following profiles are active: prod

這將在端口4431(http)上啓動Tomcat,如下所示:

2017-11-26 08:43:14.473  INFO 13400 --- [     
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 4431 (http)