文档章节

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

d
 duosum8605
发布于 2016/10/03 07:05
字数 796
阅读 99
收藏 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
springboot动态设置spingsession过期时间

spring boot配置spring session过期时间通过注解@EnableRedisHttpSesssion中的参数maxInactiveIntervalInSeconds来设置,我想通过读取yml配置文件来读取maxInactiveIntervalInSeconds参数的值...

会走路的三百块
08/02
0
0
微服务 SpringBoot 2.0(二):配置文件解析

properties我用了好多年,你却让我用yml,这是什么鬼 —— Java面试必修 引言 上一篇介绍了Spring Boot的轻松入门项目构建,对Spring Boot的特性有了初步了解。但如果要想玩得很熟练的话就请...

阿郎_
09/23
0
0
Spring Cloud(二):Spring Cloud Config

因为涉及到多个子工程,这种情况比较适合gradle担当构建工具。 配置build.gradle setting.gradle 创建子工程 然后在在根项目创建子项目目录cloud 以及类路径目录 mkdir p src/main/{java,res...

神易风
08/08
0
0
SpringBoot基础篇配置信息之如何读取配置信息

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 SpringBoot极大的减少了配置,开一个新项目时,完全可以做到什么配置都不加,就可以直接跑,简单方便的同时,就带来了一个问题 怎么知道这些...

小灰灰Blog
10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

我为什么坚持写作

说写作可能是抬高了自己,目前来说只能是写东西、记录东西、表达观点和情感。 在俞敏洪的公众号上看到过一篇文章,里面讲了一个观点,大概是说写作不求能写出伟大的作品,只是把自己的生活、...

Bob2100
1分钟前
0
0
中国公有云三巨头,同时支持Rancher Kubernetes平台

华为云容器引擎(CCE)、阿里云K8S容器服务(ACK)和腾讯云K8S引擎(TKE),中国公有云三巨头正式全面支持Rancher Kubernetes平台。 Rancher正式宣布扩大对中国领先Kubernetes服务的支持,华...

RancherLabs
3分钟前
0
0
【NLP】【八】基于keras与imdb影评数据集做情感分类

【一】本文内容综述 1. keras使用流程分析(模型搭建、模型保存、模型加载、模型使用、训练过程可视化、模型可视化等) 2. 利用keras做文本数据预处理 【二】环境准备 1. 数据集下载:http:...

muqiusangyang
5分钟前
0
0
nginx 解决session一致性

session 粘滞性 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 upstream backserver {ip_hash;server 192.168.0.14:88;server 192.1...

zhu_kai1
8分钟前
0
0
使用Cloud application Studio在C4C UI里创建下拉列表(dropdown list)

在Cloud Application Studio里新建一个Code List Data Type: 维护Value和描述信息,以及在ABSL里使用的constant值。 保存之后,上述维护的信息会存储到一个名为.codelist 的文件里。激活之后...

JerryWang_SAP
8分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部