文档章节

spring-boot读取props和yml配置文件

d
 duosum8605
发布于 2016/10/03 07:05
字数 796
阅读 78
收藏 0
点赞 0
评论 0

 

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。 
首先,需要在pom文件中依赖以下jar包 

Java代码

  1. <dependencies>  
  2.     <dependency>  
  3.         <groupId>org.springframework.boot</groupId>  
  4.         <artifactId>spring-boot-starter-web</artifactId>  
  5.     </dependency>       
  6.     <dependency>  
  7.         <groupId>org.springframework.boot</groupId>  
  8.         <artifactId>spring-boot-starter-test</artifactId>  
  9.         <scope>test</scope>  
  10.     </dependency>  
  11. </dependencies>  


其次,我们需要一个spring-boot启动类 

Java代码  下载

  1. @SpringBootApplication  
  2. @EnableConfigurationProperties({PropsConfig.class,YmlConfig.class})   
  3. public class ReadApplication {  
  4.     public static void main(String[] args) {  
  5.         SpringApplication.run(ReadApplication.class, args);  
  6.     }  
  7. }  


没错,@EnableConfigurationProperties注解里指出的PropsConfig.class,YmlConfig.class分别就是读取props和yml配置文件的类。接下来,我们分别进行读取properties和yml配置文件的具体实现。 

1.读取properties配置文件 
在类路径下放置一个application.properties文件,大致内容如下: 

Java代码  下载

  1. master.ds.driverClassName=com.mysql.jdbc.Driver  
  2. master.ds.url=jdbc:mysql://localhost:3306/test  
  3. master.ds.username=root  
  4. master.ds.password=root  
  5. master.ds.filters=stat  
  6. master.ds.maxActive=20  
  7. master.ds.initialSize=1  
  8. master.ds.maxWait=60000  
  9. master.ds.minIdle=10  
  10. master.ds.timeBetweenEvictionRunsMillis=60000  
  11. master.ds.minEvictableIdleTimeMillis=300000  
  12. master.ds.validationQuery=SELECT 'x'  
  13. master.ds.testWhileIdle=true  
  14. master.ds.testOnBorrow=false  
  15. master.ds.testOnReturn=false  
  16. master.ds.poolPreparedStatements=true  
  17. master.ds.maxOpenPreparedStatements=100  
  18. master.ds.removeAbandoned=true  
  19. master.ds.removeAbandonedTimeout=1800  
  20. master.ds.logAbandoned=true  


读取props配置的类,很简单,基本就是一个pojo/vo类,在类上加载@ConfigurationProperties注解即可。 

Java代码

  1. @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")  
  2. public class PropsConfig {  
  3.     private String driverClassName;  
  4.     private String url;  
  5.     private String username;  
  6.     private String password;  
  7.     private String filters;  
  8.     private String maxActive;  
  9.     private String initialSize;  
  10.     private String maxWait;  
  11.           
  12.     public String getDriverClassName() {  
  13.         return driverClassName;  
  14.     }  
  15.     public void setDriverClassName(String driverClassName) {  
  16.         this.driverClassName = driverClassName;  
  17.     }  
  18.     public String getUrl() {  
  19.         return url;  
  20.     }  
  21.     public void setUrl(String url) {  
  22.         this.url = url;  
  23.     }  
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.     public String getPassword() {  
  31.         return password;  
  32.     }  
  33.     public void setPassword(String password) {  
  34.         this.password = password;  
  35.     }  
  36.     public String getFilters() {  
  37.         return filters;  
  38.     }  
  39.     public void setFilters(String filters) {  
  40.         this.filters = filters;  
  41.     }  
  42.     public String getMaxActive() {  
  43.         return maxActive;  
  44.     }  
  45.     public void setMaxActive(String maxActive) {  
  46.         this.maxActive = maxActive;  
  47.     }  
  48.     public String getInitialSize() {  
  49.         return initialSize;  
  50.     }  
  51.     public void setInitialSize(String initialSize) {  
  52.         this.initialSize = initialSize;  
  53.     }  
  54.     public String getMaxWait() {  
  55.         return maxWait;  
  56.     }  
  57.     public void setMaxWait(String maxWait) {  
  58.         this.maxWait = maxWait;  
  59.     }  
  60. }  



单元测试类 

Java代码  下载

  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @SpringBootTest(classes = ReadApplication.class)  
  3. public class ReadApplicationPropsTests {  
  4.     @Autowired  
  5.     private PropsConfig propsConfig;  
  6.       
  7.     @Test  
  8.     public void testDisplayPropsValue() {  
  9.         String driverClassName = propsConfig.getDriverClassName();  
  10.         String url = propsConfig.getUrl();  
  11.         String username = propsConfig.getUsername();  
  12.         String password = propsConfig.getPassword();  
  13.           
  14.         String filters = propsConfig.getFilters();  
  15.         String maxActive = propsConfig.getMaxActive();  
  16.         String initialSize = propsConfig.getInitialSize();  
  17.         String maxWait = propsConfig.getMaxWait();  
  18.                   
  19.         System.out.println("driverClassName -> " + driverClassName);  
  20.         System.out.println("url -> " + url);  
  21.         System.out.println("username -> " + username);  
  22.         System.out.println("password -> " + password);  
  23.           
  24.         System.out.println("initialSize -> " + initialSize);  
  25.         System.out.println("maxWait -> " + maxWait);  
  26.           
  27.     }  
  28. }  


可以看到在控制台输出的测试内容: 

Java代码  下载

  1. driverClassName -> com.mysql.jdbc.Driver  
  2. url -> jdbc:mysql://localhost:3306/test  
  3. username -> root  
  4. password -> root  
  5. initialSize -> 1  
  6. maxWait -> 60000  



2.读取yml配置文件 
在类路径下放置一个application.yml文件,大致内容如下: 

Java代码

  1. myProps: #自定义的属性和值  
  2.   simpleProp: simplePropValue  
  3.   arrayProps: 1,2,3,4,5  
  4.   listProp1:  
  5.     - name: abc  
  6.       value: abcValue  
  7.     - name: efg  
  8.       value: efgValue  
  9.   listProp2:  
  10.     - config2Value1  
  11.     - config2Vavlue2  
  12.   mapProps:  
  13.     key1: value1  
  14.     key2: value2  



读取yml配置文件的类。 

Java代码  下载

  1. @ConfigurationProperties(prefix="myProps"//application.yml中的myProps下的属性    
  2. public class YmlConfig {  
  3.     private String simpleProp;    
  4.     private String[] arrayProps;    
  5.     private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值    
  6.     private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值    
  7.     private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值    
  8.         
  9.     public String getSimpleProp() {    
  10.         return simpleProp;    
  11.     }    
  12.         
  13.     public void setSimpleProp(String simpleProp) {    
  14.         this.simpleProp = simpleProp;    
  15.     }    
  16.         
  17.     public List<Map<String, String>> getListProp1() {    
  18.         return listProp1;    
  19.     }    
  20.     public List<String> getListProp2() {    
  21.         return listProp2;    
  22.     }    
  23.     
  24.     public String[] getArrayProps() {    
  25.         return arrayProps;    
  26.     }    
  27.     
  28.     public void setArrayProps(String[] arrayProps) {    
  29.         this.arrayProps = arrayProps;    
  30.     }    
  31.     
  32.     public Map<String, String> getMapProps() {    
  33.         return mapProps;    
  34.     }    
  35.     
  36.     public void setMapProps(Map<String, String> mapProps) {    
  37.         this.mapProps = mapProps;    
  38.     }   
  39. }  



单元测试类 

Java代码

  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @SpringBootTest(classes = ReadApplication.class)  
  3. public class ReadApplicationYmlTests {  
  4.     @Autowired  
  5.     private YmlConfig ymlConfig;  
  6.       
  7.     @Test  
  8.     public void testDisplayYmlValue() throws JsonProcessingException {  
  9.         System.out.println("simpleProp: " + ymlConfig.getSimpleProp());    
  10.           
  11.         ObjectMapper objectMapper = new ObjectMapper();  
  12.         System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps()));    
  13.         System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1()));    
  14.         System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2()));    
  15.         System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));    
  16.   
  17.     }  
  18. }  



可以看到在控制台输出的测试内容: 

Java代码

 收藏代码

  1. simpleProp: simplePropValue  
  2. arrayProps: ["1","2","3","4","5"]  
  3. listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]  
  4. listProp2: ["config2Value1","config2Vavlue2"]  
  5. mapProps: {"key1":"value1","key2":"value2"}  

© 著作权归作者所有

共有 人打赏支持
d
粉丝 0
博文 2
码字总数 2563
作品 0
济南
spring-boot读取props和yml配置文件

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。 首先,需要在pom文件中依赖以下jar包 其次,我们需要一个spring-boot启动类 没错,@Enable...

gaolu
2016/09/30
3.5K
3
Spring Boot核心配置

启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: 或者流式API 下面是一个典型的Spring Boot工程包布局,Application启动类位于根目录下 核心注解 启动类上面...

Java技术栈
06/10
0
0
Spring Boot - Profile配置

Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境,需...

Java技术栈
06/10
0
0
SpringBoot | 第三章:springboot配置详解

SpringBoot 第三章:springboot配置详解 基于springboot的的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动。但在大部分开发环境下,添加额外配置是无所避免...

oKong
07/15
0
0
Spring Cloud Config分布式配置

下午抽空看了下Spring Cloud Config搭建配置中心,过程中有点坑,不过总算过来了,和大家分享一下。 了解Spring Boot+Spring Cloud的微服务框架的都应该知道,它的出现不是为了单个的服务,而...

海岸线的曙光
2017/12/25
0
0
SpringBoot详解(二)-Spring Boot的核心

SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的web开发 SpringBoot详解(四)-优雅地处理日志 Spri...

CSDN_LQR
2017/08/30
0
0
FreeMarker | 取值篇

第一部分:Spring Boot 集成 FreeMarker 1、 需要这些依赖 2、yml 我喜欢 yml,所以删掉 ,新建 3、配置 在 中添加如下配置 4、Controller - View 5、运行效果 第二部分:取值 1、学过 free...

Wenyi_Feng
06/14
0
0
SpringBoot与Mybatis整合的多模块项目

springBoot项目构建 Spring多模块项目的构建 1.使用Idea构建一个Springboot项目 File-->new-->project-->springInitializr-->(NEXT) 2.主项目pom中添加依赖 ~ org.springframework.bootspri......

JavionXiong
06/22
0
0
Spring boot整合ElasticSearch案例分享

The best elasticsearch highlevel java rest api-----bboss Spring boot整合ElasticSearch HighLevel Rest Client案例分享,本文涉及内容 集成bboss es starter 单es集群整合 多es集群整合 ......

bboss
06/26
0
0
Spring Cloud 入门教程 - Eureka服务注册与发现

简介 在微服务中,服务注册与发现对管理各个微服务子系统起着关键作用。随着系统水平扩展的越来越多,系统拆分为微服务的数量也会相应增加,那么管理和获取这些微服务的URL就会变得十分棘手,...

乾儿
05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统

expect脚本同步文件 更改权限 执行脚本 查看执行结果 expect eof需要加上,作用是等脚本命令执行完再进行退出 expect脚本指定host和要同步的文件 更改权限,执行脚本 构建文件分发系统 需求背...

Zhouliang6
15分钟前
1
0
Hive应用:外部分区表

Hive应用:外部分区表 介绍 Hive可以创建外部分区表。创建表的时候,分区要在建表语句中体现。建完之后,你不会在表中看到数据,需要进行分区添加,使用alter语句进行添加。然后数据才会显示...

星汉
25分钟前
0
0
点击Enter登录

1. 效果 2. 实现过程(记得引入jq文件) //6.回车事件 登录 $(function() { document.onkeydown = function(event) { var e = event || window.event || arguments.callee.caller.arguments......

Lucky_Me
30分钟前
1
0
点击菜单内容切换

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .menu{ height: 38px; background-color: #eeeeee; line-height: 38px; } .mao{ ......

南桥北木
今天
1
0
OSChina 周六乱弹 —— 妹子和游戏哪个更好玩

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享唐朝乐队的单曲《国际歌》 《国际歌》- 唐朝乐队 手机党少年们想听歌,请使劲儿戳(这里) @举个栗子- :日常祈雨 邪恶的大祭...

小小编辑
今天
481
6
流利阅读笔记32-20180721待学习

“人工智能”造假:只有人工,没有智能 Lala 2018-07-21 1.今日导读 当今社会,擅长单个方面的人工智能已经盛行,手机借助 AI 智慧防抖技术帮助大家拍出清晰照片,谷歌研发的 AI 助手将可以帮...

aibinxiao
今天
6
0
我的成长记录(一)

今天突然精神抖擞,在我的博客下新开一项分类>成长记录,专门记录每隔一段时间我的一点感悟吧。因为今天才专门花时间新开这样一个分类,所以以前有过的一些感悟没有记录下来,现在已经想不起...

dtqq
今天
1
0
机器学习管理平台 MLFlow

最近工作很忙,博客一直都没有更新。抽时间给大家介绍一下Databrick开源的机器学习管理平台-MLFlow。 谈起Databrick,相信即使是不熟悉机器学习和大数据的工程湿们也都有所了解,它由Spark的...

naughty
今天
11
0
idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
2
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部