搜尋
首頁後端開發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
Java Spring怎么实现定时任务Java Spring怎么实现定时任务May 24, 2023 pm 01:28 PM

java实现定时任务Jdk自带的库中,有两种方式可以实现定时任务,一种是Timer,另一种是ScheduledThreadPoolExecutor。Timer+TimerTask创建一个Timer就创建了一个线程,可以用来调度TimerTask任务Timer有四个构造方法,可以指定Timer线程的名字以及是否设置为为守护线程。默认名字Timer-编号,默认不是守护线程。主要有三个比较重要的方法:cancel():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响purge():从任务队

Java axios与spring前后端分离传参规范是什么Java axios与spring前后端分离传参规范是什么May 03, 2023 pm 09:55 PM

一、@RequestParam注解对应的axios传参方法以下面的这段Springjava代码为例,接口使用POST协议,需要接受的参数分别是tsCode、indexCols、table。针对这个Spring的HTTP接口,axios该如何传参?有几种方法?我们来一一介绍。@PostMapping("/line")publicList

Spring Boot与Spring Cloud的区别与联系Spring Boot与Spring Cloud的区别与联系Jun 22, 2023 pm 06:25 PM

SpringBoot和SpringCloud都是SpringFramework的扩展,它们可以帮助开发人员更快地构建和部署微服务应用程序,但它们各自有不同的用途和功能。SpringBoot是一个快速构建Java应用的框架,使得开发人员可以更快地创建和部署基于Spring的应用程序。它提供了一个简单、易于理解的方式来构建独立的、可执行的Spring应用

Spring 最常用的 7 大类注解,史上最强整理!Spring 最常用的 7 大类注解,史上最强整理!Jul 26, 2023 pm 04:38 PM

随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。

从零开始学Spring Cloud从零开始学Spring CloudJun 22, 2023 am 08:11 AM

作为一名Java开发者,学习和使用Spring框架已经是一项必不可少的技能。而随着云计算和微服务的盛行,学习和使用SpringCloud成为了另一个必须要掌握的技能。SpringCloud是一个基于SpringBoot的用于快速构建分布式系统的开发工具集。它为开发者提供了一系列的组件,包括服务注册与发现、配置中心、负载均衡和断路器等,使得开发者在构建微

Java Spring框架创建项目与Bean的存储与读取实例分析Java Spring框架创建项目与Bean的存储与读取实例分析May 12, 2023 am 08:40 AM

1.Spring项目的创建1.1创建Maven项目第一步,创建Maven项目,Spring也是基于Maven的。1.2添加spring依赖第二步,在Maven项目中添加Spring的支持(spring-context,spring-beans)在pom.xml文件添加依赖项。org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE刷新等待加载完成。1.3创建启动类第三步,创

spring设计模式有哪些spring设计模式有哪些Dec 29, 2023 pm 03:42 PM

spring设计模式有:1、依赖注入和控制反转;2、工厂模式;3、模板模式;4、观察者模式;5、装饰者模式;6、单例模式;7、策略模式和适配器模式等。详细介绍:1、依赖注入和控制反转: 这两个设计模式是Spring框架的核心。通过依赖注入,Spring负责管理和注入组件之间的依赖关系,降低了组件之间的耦合度。控制反转则是指将对象的创建和依赖关系的管理交给Spring容器等等。

Java Spring Bean生命周期管理的示例分析Java Spring Bean生命周期管理的示例分析Apr 18, 2023 am 09:13 AM

SpringBean的生命周期管理一、SpringBean的生命周期通过以下方式来指定Bean的初始化和销毁方法,当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法二、通过@Bean的参数(initMethod,destroyMethod)指定Bean的初始化和销毁方法1、项目结构2、PersonpublicclassPerson{publicP

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),