文档章节

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

d
 duosum8605
发布于 2016/10/03 07:05
字数 796
阅读 102
收藏 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 2.0(二):配置文件解析

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

阿郎_
2018/09/23
0
0
springboot动态设置spingsession过期时间

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

会走路的三百块
2018/08/02
1K
2
Spring Cloud(二):Spring Cloud Config

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

神易风
2018/08/08
0
0
吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有...

Java技术栈
2018/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部