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

所属分类: 软件编程 / java 阅读数: 31
收藏 0 赞 0 分享

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。

首先,需要在pom文件中依赖以下jar包

<dependencies> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-web</artifactId> 
 </dependency>  
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-test</artifactId> 
  <scope>test</scope> 
 </dependency> 
</dependencies> 

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

@SpringBootApplication 
@EnableConfigurationProperties({PropsConfig.class,YmlConfig.class}) 
public class ReadApplication { 
 public static void main(String[] args) { 
  SpringApplication.run(ReadApplication.class, args); 
 } 
} 

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

1.读取properties配置文件

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

master.ds.driverClassName=com.mysql.jdbc.Driver 
master.ds.url=jdbc:mysql://localhost:3306/test 
master.ds.username=root 
master.ds.password=root 
master.ds.filters=stat 
master.ds.maxActive=20 
master.ds.initialSize=1 
master.ds.maxWait=60000 
master.ds.minIdle=10 
master.ds.timeBetweenEvictionRunsMillis=60000 
master.ds.minEvictableIdleTimeMillis=300000 
master.ds.validationQuery=SELECT 'x' 
master.ds.testWhileIdle=true 
master.ds.testOnBorrow=false 
master.ds.testOnReturn=false 
master.ds.poolPreparedStatements=true 
master.ds.maxOpenPreparedStatements=100 
master.ds.removeAbandoned=true 
master.ds.removeAbandonedTimeout=1800 
master.ds.logAbandoned=true 

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

@ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties") 
public class PropsConfig { 
 private String driverClassName; 
 private String url; 
 private String username; 
 private String password; 
 private String filters; 
 private String maxActive; 
 private String initialSize; 
 private String maxWait; 
 public String getDriverClassName() { 
  return driverClassName; 
 } 
 public void setDriverClassName(String driverClassName) { 
  this.driverClassName = driverClassName; 
 } 
 public String getUrl() { 
  return url; 
 } 
 public void setUrl(String url) { 
  this.url = url; 
 } 
 public String getUsername() { 
  return username; 
 } 
 public void setUsername(String username) { 
  this.username = username; 
 } 
 public String getPassword() { 
  return password; 
 } 
 public void setPassword(String password) { 
  this.password = password; 
 } 
 public String getFilters() { 
  return filters; 
 } 
 public void setFilters(String filters) { 
  this.filters = filters; 
 } 
 public String getMaxActive() { 
  return maxActive; 
 } 
 public void setMaxActive(String maxActive) { 
  this.maxActive = maxActive; 
 } 
 public String getInitialSize() { 
  return initialSize; 
 } 
 public void setInitialSize(String initialSize) { 
  this.initialSize = initialSize; 
 } 
 public String getMaxWait() { 
  return maxWait; 
 } 
 public void setMaxWait(String maxWait) { 
  this.maxWait = maxWait; 
 } 
} 

单元测试类

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = ReadApplication.class) 
public class ReadApplicationPropsTests { 
 @Autowired 
 private PropsConfig propsConfig; 
 @Test 
 public void testDisplayPropsValue() { 
  String driverClassName = propsConfig.getDriverClassName(); 
  String url = propsConfig.getUrl(); 
  String username = propsConfig.getUsername(); 
  String password = propsConfig.getPassword();   
  String filters = propsConfig.getFilters(); 
  String maxActive = propsConfig.getMaxActive(); 
  String initialSize = propsConfig.getInitialSize(); 
  String maxWait = propsConfig.getMaxWait();     
  System.out.println("driverClassName -> " + driverClassName); 
  System.out.println("url -> " + url); 
  System.out.println("username -> " + username); 
  System.out.println("password -> " + password);   
  System.out.println("initialSize -> " + initialSize); 
  System.out.println("maxWait -> " + maxWait); 
   
 } 
} 

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

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

2.读取yml配置文件

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

myProps: #自定义的属性和值 
 simpleProp: simplePropValue 
 arrayProps: 1,2,3,4,5 
 listProp1: 
 - name: abc 
  value: abcValue 
 - name: efg 
  value: efgValue 
 listProp2: 
 - config2Value1 
 - config2Vavlue2 
 mapProps: 
 key1: value1 
 key2: value2 

读取yml配置文件的类。

@ConfigurationProperties(prefix="myProps") //application.yml中的myProps下的属性 
public class YmlConfig { 
 private String simpleProp; 
 private String[] arrayProps; 
 private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值 
 private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值 
 private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值   
 public String getSimpleProp() { 
  return simpleProp; 
 } 
  
 public void setSimpleProp(String simpleProp) { 
  this.simpleProp = simpleProp; 
 } 
  
 public List<Map<String, String>> getListProp1() { 
  return listProp1; 
 } 
 public List<String> getListProp2() { 
  return listProp2; 
 } 
 
 public String[] getArrayProps() { 
  return arrayProps; 
 } 
 
 public void setArrayProps(String[] arrayProps) { 
  this.arrayProps = arrayProps; 
 } 
 
 public Map<String, String> getMapProps() { 
  return mapProps; 
 } 
 
 public void setMapProps(Map<String, String> mapProps) { 
  this.mapProps = mapProps; 
 } 
} 

单元测试类

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = ReadApplication.class) 
public class ReadApplicationYmlTests { 
 @Autowired 
 private YmlConfig ymlConfig;  
 @Test 
 public void testDisplayYmlValue() throws JsonProcessingException { 
  System.out.println("simpleProp: " + ymlConfig.getSimpleProp());    
  ObjectMapper objectMapper = new ObjectMapper(); 
  System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps())); 
  System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1())); 
  System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2())); 
  System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));  
 } 
} 

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

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

是不是很神奇,不需要spring的applicationContext.xml文件也可以顺利运行之。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

spring boot 静态资源处理方法

本篇文章主要介绍了spring boot 静态资源处理方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解spring boot 使用application.properties 进行外部配置

这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Java实现分页的前台页面和后台代码

这篇文章主要为大家详细介绍了Java实现分页的前台页面和后台代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解spring面向切面aop拦截器

spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
收藏 0 赞 0 分享

Java easyui树形表格TreeGrid的实现代码

这篇文章主要为大家详细介绍了Java easyui树形表格TreeGrid的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java的NIO与IO的详解及对比

这篇文章主要介绍了Java的NIO与IO的详解及对比的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中网络IO的实现方式(BIO、NIO、AIO)介绍

这篇文章主要介绍了Java中网络IO的实现方式(BIO、NIO、AIO)介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 敏感信息加密处理

本文主要介绍了Java 敏感信息加密处理的相关知识:1)敏感信息加密处理我们要实现什么;2)敏感信息加密处理我做了些什么;3)敏感信息加密实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详解使用Spring3 实现用户登录以及权限认证

这篇文章主要介绍了详解使用Spring3 实现用户登录以及权限认证,这里整理了详细的代码,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

Java的内存机制详解

本文主要介绍了Java的内存机制的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享
查看更多