當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot笔记:SpringBoot2.3读取应用配置参数的几种方式
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot笔记:SpringBoot2.3读取应用配置参数的几种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- yml格式文件
- 方式一:@ConfigurationProperties注解方式
- 方式二:@Value注解方式
- 方式三:Environment獲取方式
- 測試結果
- propetries格式文件
- 方法四:通過文件流配合Properties類讀取
- 方法五:通過ResourceBundle類讀取
yml格式文件
這里如果使用的yml格式文件,yml格式文件配置信息如下,其中test是這次要解析的字段:
#端口,項目上下文 server:port: 8080servlet:context-path: /helloworld-demotest:name: 云天明age: 18address: 河南省鄭州市方式一:@ConfigurationProperties注解方式
使用ConfigurationProperties來獲取配置文件的字段,參數prefix代表配置的前綴,@Data使用是的是lombok插件
package com.demo.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** 獲取自定義配置方法一*/ @Data @Component @ConfigurationProperties(prefix = "test") public class MyConfig1 {private String name;private Integer age;private String address; }方式二:@Value注解方式
package com.demo.config;import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** 獲取自定義配置方法二*/ @Data @Component public class MyConfig2 {@Value("${test.name}")private String name;@Value("${test.age}")private Integer age;@Value("${test.address}")private String address; }方式三:Environment獲取方式
package com.demo.config;import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component;/*** 獲取自定義配置方法二*/ @Component @Configuration public class MyConfig3 {@AutowiredEnvironment env;public String getName() {return env.getProperty("test.name");}public Integer getAge() {return env.getProperty("test.age", Integer.class);}public String getAddress() {return env.getProperty("test.address");} }測試結果
@AutowiredMyConfig1 myConfig1;@AutowiredMyConfig2 myConfig2;@AutowiredMyConfig3 myConfig3;@RequestMapping("/getMyconfig")public void getMyconfig() throws IOException {log.info("Myconfig1 姓名:{},年齡:{},住址:{}", myConfig1.getName(), myConfig1.getAge(), myConfig1.getAddress());log.info("Myconfig2 姓名:{},年齡:{},住址:{}", myConfig2.getName(), myConfig2.getAge(), myConfig2.getAddress());log.info("Myconfig3 姓名:{},年齡:{},住址:{}", myConfig3.getName(), myConfig3.getAge(), myConfig3.getAddress());}測試結果:
2021-01-07 20:56:13.666 INFO 50108 --- [nio-8080-exec-1] com.demo.controller.TestController : Myconfig1 姓名:云天明,年齡:18,住址:河南省鄭州市 2021-01-07 20:56:13.668 INFO 50108 --- [nio-8080-exec-1] com.demo.controller.TestController : Myconfig2 姓名:云天明,年齡:18,住址:河南省鄭州市 2021-01-07 20:56:13.670 INFO 50108 --- [nio-8080-exec-1] com.demo.controller.TestController : Myconfig3 姓名:云天明,年齡:18,住址:河南省鄭州市propetries格式文件
如果是properties文件,以上的方法也是可以使用的,下面這篇文章中提供了多種獲取resources目錄下文件的方式
《如何讀取resources目錄下的文件路徑(九種方式)》
獲取propetries內容前提就是首先獲取propetries,配置文件記得使用UTF-8編碼,以免出現亂碼問題
方法四:通過文件流配合Properties類讀取
主要思想是獲取文件inputStream流,然后使用Properties類load方式讀取,測試代碼如下:
@RequestMapping("/getMyconfig4")public void getMyconfig4() {//通過這種方式獲取文件流try(InputStream inputStream = ClassLoader.getSystemResourceAsStream("test.properties")){Properties prop = new Properties();//指定編碼為UTF-8以防中文亂碼prop.load(new InputStreamReader(inputStream, "UTF-8"));String name = prop.getProperty("test.name");String age = prop.getProperty("test.age");String address = prop.getProperty("test.address");log.info("Myconfig4 姓名:{},年齡:{},住址:{}", name, age, address);}catch (Exception e){log.error("獲取配置文件失敗",e);}}測試結果:
2021-01-07 21:46:16.447 INFO 4568 --- [nio-8080-exec-4] com.demo.controller.TestController : Myconfig4 姓名:云天明,年齡:18,住址:河南省鄭州市方法五:通過ResourceBundle類讀取
通過 ResourceBundle.getBundle(“test”)直接過去配置文件,并且讀取配置文件內容。
@RequestMapping("/getMyconfig5")public void getMyconfig5() {try {//注意這里的test只有文件名不帶類型ResourceBundle resource = ResourceBundle.getBundle("test");String name = changeToUTF8(resource.getString("test.name"));String age = changeToUTF8(resource.getString("test.age"));String address = changeToUTF8(resource.getString("test.address"));log.info("Myconfig5 姓名:{},年齡:{},住址:{}", name, age, address);} catch (Exception e) {log.error("獲取配置文件失敗", e);}}/*** 將原來編碼為8859-1字符串轉為UTF-8編碼** @param str* @return*/private String changeToUTF8(String str) throws UnsupportedEncodingException {if (str == null) {return null;}return new String(str.getBytes("ISO8859-1"));}測試結果:
2021-01-07 22:12:56.178 INFO 36044 --- [nio-8080-exec-2] com.demo.controller.TestController : Myconfig5 姓名:云天明,年齡:18,住址:河南省鄭州市總結
以上是生活随笔為你收集整理的SpringBoot笔记:SpringBoot2.3读取应用配置参数的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot笔记:SpringB
- 下一篇: SpringBoot笔记:SpringB