Spring-boot中讀取config配置文件的兩種方式

了解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置文件application.properties,當然也可以通過注解自定義配置文件的信息。


Spring-Boot讀取配置文件的方式:

一.讀取核心配置文件信息application.properties的內容

? ? ?核心配置文件是指在resources根目錄下的application.properties或application.yml配置文件,讀取這兩個配置文件的方法有兩種,都比較簡單。


核心配置文件application.properties內容如下:

[java]?view plaincopy
  1. test.msg=Hello?World?SpringBoot??

方式一:使用@Value方式(常用)

[java]?view plaincopy
  1. <span?style="font-size:18px;">package?Solin.controller;??
  2. ??
  3. import?org.springframework.beans.factory.annotation.Value;??
  4. import?org.springframework.web.bind.annotation.RequestMapping;??
  5. import?org.springframework.web.bind.annotation.RestController;??
  6. ??
  7. @RestController??
  8. public?class?WebController?{??
  9. ????@Value("${test.msg}")??
  10. ????private?String?msg;??
  11. ??????
  12. ????@RequestMapping("/index1")???
  13. ????public?String?index1(){??
  14. ????????return?"方式一:"+msg;??
  15. ????}??
  16. }</span>??
注意:在@Value的${}中包含的是核心配置文件中的鍵名。在Controller類上加@RestController表示將此類中的所有視圖都以JSON方式顯示,類似于在視圖方法上加@ResponseBody。
訪問:http://localhost:8088/index1時得到:"方式一:Hello World SpringBoot"


方式二:使用Environment方式

[java]?view plaincopy
  1. <span?style="font-size:18px;">package?Solin.controller;??
  2. ??
  3. import?org.springframework.beans.factory.annotation.Autowired;??
  4. import?org.springframework.beans.factory.annotation.Value;??
  5. import?org.springframework.core.env.Environment;??
  6. import?org.springframework.web.bind.annotation.RequestMapping;??
  7. import?org.springframework.web.bind.annotation.RestController;??
  8. ??
  9. @RestController??
  10. public?class?WebController?{??
  11. ????@Autowired??
  12. ????private?Environment?env;??
  13. ??????
  14. ????@RequestMapping("/index2")???
  15. ????public?String?index2(){??
  16. ????????return?"方式二:"+env.getProperty("test.msg");??
  17. ????}??
  18. }??
  19. </span>??
注意:這種方式是依賴注入Evnironment來完成,在創建的成員變量private Environment env上加上@Autowired注解即可完成依賴注入,然后使用env.getProperty("鍵名")即可讀取出對應的值。
訪問:http://localhost:8088/index2時得到:"方式二:Hello World SpringBoot"


二.讀取自定義配置文件信息,例如:author.properties

為了不破壞核心文件的原生態,但又需要有自定義的配置信息存在,一般情況下會選擇自定義配置文件來放這些自定義信息,這里在resources目錄下創建配置文件author.properties

resources/author.properties內容如下:

[java]?view plaincopy
  1. author.name=Solin??
  2. author.age=22??

創建管理配置的實體類:

[java]?view plaincopy
  1. package?Solin.controller;??
  2. ??
  3. import?org.springframework.boot.context.properties.ConfigurationProperties;??
  4. import?org.springframework.context.annotation.Configuration;??
  5. import?org.springframework.stereotype.Component;??
  6. ??
  7. //加上注釋@Component,可以直接其他地方使用@Autowired來創建其實例對象??
  8. @Component??
  9. @ConfigurationProperties(prefix?=?"author",locations?=?"classpath:author.properties")?????
  10. public?class?MyWebConfig{??
  11. ????private?String?name;??
  12. ????private?int?age;??
  13. ????public?String?getName()?{??
  14. ????????return?name;??
  15. ????}??
  16. ????public?void?setName(String?name)?{??
  17. ????????this.name?=?name;??
  18. ????}??
  19. ????public?int?getAge()?{??
  20. ????????return?age;??
  21. ????}??
  22. ????public?void?setAge(int?age)?{??
  23. ????????this.age?=?age;??
  24. ????}??
  25. }??

注意:
? ??在@ConfigurationProperties注釋中有兩個屬性:
locations:指定配置文件的所在位置
prefix:指定配置文件中鍵名稱的前綴(我這里配置文件中所有鍵名都是以author.開頭)
? ? 使用@Component是讓該類能夠在其他地方被依賴使用,即使用@Autowired注釋來創建實例。


創建測試Controller

[java]?view plaincopy
  1. package?Solin.controller;??
  2. ??
  3. import?org.springframework.beans.factory.annotation.Autowired;??
  4. import?org.springframework.stereotype.Controller;??
  5. import?org.springframework.web.bind.annotation.RequestMapping;??
  6. import?org.springframework.web.bind.annotation.ResponseBody;??
  7. ??
  8. @Controller????
  9. public?class?ConfigController?{??
  10. ????@Autowired??
  11. ????private?MyWebConfig?conf;??
  12. ??????
  13. ????@RequestMapping("/test")???
  14. ????public?@ResponseBody?String?test()?{??
  15. ????????return?"Name:"+conf.getName()+"---"+"Age:"+conf.getAge();???
  16. ????}??
  17. }??

注意:由于在Conf類上加了注釋@Component,所以可以直接在這里使用@Autowired來創建其實例對象。

訪問:http://localhost:8088/test時得到:"Name:Solin---Age:22"

轉載于:https://www.cnblogs.com/lantx/p/7497746.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371294.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371294.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371294.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaFX 2 GameTutorial第5部分

介紹 這是與JavaFX 2 Game Tutorial相關的六部分系列的第五部分。 我知道自從我寫關于游戲的博客以來已經很長時間了&#xff0c;但希望您仍然與我在一起。 如果您想回顧一下&#xff0c;請閱讀第1部分 &#xff0c; 第2 部分 &#xff0c; 第3 部分和第4 部分 &#xff0c;以了…

h5是可以一鍵打包小程序的_H5手機網站封裝打包微信小程序并實現分享及微信支付...

手機網站打包小程序教程&#xff0c;生成小程序&#xff0c;網頁版小程序 打包微信小程序&#xff0c;H5封裝成微信小程序。微信小程序開發一般分為2種方式&#xff0c;一種就是原生開發小程序&#xff0c;一種是將手機網站打包成小程序。原生開發小程序成本較高&#xff0c;技…

Hive中的數據庫、表、數據與HDFS的對應關系

1、hive數據庫 我們在hive終端&#xff0c;查看數據庫信息&#xff0c;可以看出hive有一個默認的數據庫default&#xff0c;而且我們還知道hive數據庫對應的是hdfs上面的一個目錄&#xff0c;那么默認的數據庫default到底對應哪一個目錄呢&#xff1f;我們可以通過hive配置文件…

軟件工程概論作業3

轉載于:https://www.cnblogs.com/clueless/p/6568351.html

使用JSF的面向服務的UI

在大型軟件開發項目中&#xff0c;面向服務的體系結構非常常見&#xff0c;因為它提供了可供不同團隊或部門使用的功能接口。 創建用戶界面時&#xff0c;應應用相同的原理。 對于具有開票部門和客戶管理部門等的大型公司&#xff0c;組織結構圖可能如下所示&#xff1a; 如果計…

pocib模板流程圖_各單據流程POCIB

POCIB各階段流程報關流程從廣義上講&#xff0c;報關是指進出境運輸工具負責人、進出境口貨物收發貨人、進出境物品的所有人或者他們的代理人向海關辦理運輸工具、貨物、物品進出境手續及相關手續的全過程。其中&#xff0c;進出境運輸工具負責人、進出口貨物收發貨人、進出境物…

WinDbg 查看靜態變量

有如下Class。若想查看靜態變量內容。因為靜態變量和類綁定&#xff0c;僅需要查看類即可。 namespace ConsoleApplication13 {class Program{public static string public_string "pubstr_static";public static string private_string "pristr_static"…

vue 固定div 滾動_vue.js-div滾動條隱藏但有滾動效果的實現方法

組件被包在一個高度固定的divmounted () {var boDiv document.getElementById(this.id);if(boDiv undefined){return;}var isFirefoxnavigator.userAgent.indexOf("Firefox")if(isFirefox>0){boDiv.addEventListener(DOMMouseScroll, function(event) { //火狐v…

JBoss核心Java Web服務

這篇博客文章涉及Web服務。 好吧&#xff0c;更確切地說&#xff0c;它處理JBoss上的“普通” java Web服務。 這意味著我們將創建一個沒有任何其他框架&#xff08;如CXF&#xff0c;Axis等&#xff09;的Web服務。 JBoss它自己提供對Web服務的支持。 因此&#xff0c;如果您真…

JavaSE--for each

參考&#xff1a;http://blog.csdn.net/yasi_xi/article/details/25482173 學習多線程的時候實例化線程數組而挖掘出來的一直以來的理解誤區 之前一直以為for each 本質上和for循環以及迭代器沒什么區別 1 package foreach;2 3 public class ForeachDemo1 {4 5 public …

[BZOJ1726][Usaco2006 Nov]Roadblocks第二短路

1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1277 Solved: 607 [Submit][Status][Discuss]Description 貝茜把家搬到了一個小農場&#xff0c;但她常常回到FJ的農場去拜訪她的朋友。貝茜很喜歡路邊的風景&#xff0c;不想那么快…

mysql 5.1.62_MySQL 5.5.62 安裝方法(標準配置版)

1.此安裝方法適用于絕大多數MySQL版本&#xff0c;首先在MySQL官網上下載好所需版本。2.(官網可能不太好找)在我的博客列表中有一篇是MySQL官網下載鏈接&#xff0c;直達下載界面&#xff0c;方便。3.下載。(安裝版 MSI Installer)4.下載安裝包然后雙擊開始安裝選擇同意協議并…

簡化Java內存分析

作為一名典型的Java開發人員&#xff0c;除了遵循關閉連接&#xff0c;流等典型的最佳實踐外&#xff0c;我從未監視過應用程序的內存使用情況。最近&#xff0c;我們在JBoss服務器中遇到了一些問題&#xff0c;不得不深入研究內存管理Java中最好的事情之一是&#xff0c;創建對…

nyoj 1129 Salvation 模擬

思路&#xff1a;每個坐標有四種狀態&#xff0c;每個點對應的每種狀態只能走一個方向&#xff0c;如果走到一個重復的狀態說明根本不能走到終點&#xff0c;否則繼續走即可。 坑點&#xff1a;有可能初始坐標四周都是墻壁&#xff0c;如果不判斷下可能會陷入是死循環。 貼上測…

詳解mysql數據庫的啟動與終止_詳解MySQL數據庫的啟動與終止(一)

由于MySQL服務器具有多種安裝分發&#xff0c;而且能夠運行在多種操作平臺之上&#xff0c;因此它的啟動與停止的方法也多種多樣。你可以根據實際情況使用其中的一種。在你安裝、升級或者維護系統時&#xff0c;你可能需要多次啟動和終止服務器&#xff0c;你需要了解啟動和終止…

easyui 插入中間行

function inserrow() {var index_dx 0;var index_lt 0;var rows $(#dg).datagrid(getRows)//獲取當前的數據行前期數據準備for (var i 0; i < rows.length; i) {if (rows[i][運營商] 電信) {index_dx i;dxptjss_dx parseInt(rows[i][短信平臺接收數]);} else {index_…

使用JNA的透明JFrame

在“ 使JFrame透明”中&#xff0c;我展示了一種使用AWTUtilities類使框架透明的方法。 但是使用該類會導致訪問限制編譯時錯誤&#xff0c;該文章中還顯示了Eclipse中的解析。 現在&#xff0c;這里是使用Java本機的版本。 我使用Java本機訪問&#xff08;JNA&#xff09;庫來…

Problem: Query on the tree(二分+劃分樹)

題目鏈接&#xff1a; Problem: Query on the tree Time limit: 1s Mem limit: 64 MB Problem DescriptionThere is a tree with n node, labeled from 1 to n, and the root of the tree is 1. For every node i, if its father is j, its value vivj*i%20161119, the…

day04_09 while循環03

練習題: 3.如何輸入一個如下的直角三角形,用戶指定輸出行數:(如果上下反轉,右如何實現?) ********** 以下是自己的思路,沒有按照上課老師的思路,反正經過不斷的測試改進得出的算法 num int(input("請輸入行數")) line 1 while line < num1:lie 1 while lie &l…

idal 創建springboot 項目_手把手的SpringBoot教程,SpringBoot創建web項目(四)

在實際的開發過程中&#xff0c;我們需要前端頁面向Java端提交請求&#xff0c;這些請求一般分為get方式和post方式&#xff0c;不管是哪一種方式&#xff0c;一般都會攜帶一些參數。這一節&#xff0c;我們來演示一下如何給Controller傳遞參數。代碼&#xff1a;RestControlle…