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

 更新时间:2017年12月13日 10:06:45   作者:千山独行  
本篇文章主要介绍了spring-boot读取props和yml配置文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近微框架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文件也可以顺利运行之。

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

相关文章

  • Java轻松实现表单提交的三种方法

    Java轻松实现表单提交的三种方法

    在Web开发中,表单是用户与网站交互的主要方式之一,本文将详细介绍如何在Java中实现表单提交,并通过代码和案例为新手朋友提供详细的指导,有需要的可以参考下
    2024-10-10
  • SpringBoot实现API接口的完整代码

    SpringBoot实现API接口的完整代码

    这篇文章主要给大家介绍了关于SpringBoot实现API接口的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • SpringBoot简单实现文件上传

    SpringBoot简单实现文件上传

    这篇文章主要介绍了SpringBoot简单实现文件上传,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • Spring Boot3 跨域配置 Cors的方式

    Spring Boot3 跨域配置 Cors的方式

    这篇文章主要介绍了Spring Boot3 跨域配置 Cors,通过使用CORS,开发人员可以控制哪些外部网页可以访问他们的资源,从而提高应用程序的安全性,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java实现导出Excel功能

    Java实现导出Excel功能

    通过java中Controller层,来接受请求,数据库查询到的数据进行封装,然后使用ExcelUtils进行输出,接下来通过本文给大家分享Java实现导出Excel功能的实例代码,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • JAVA线程sleep()和wait()详解及实例

    JAVA线程sleep()和wait()详解及实例

    这篇文章主要介绍了JAVA线程sleep()和wait()详解及实例的相关资料,探讨一下sleep()和wait()方法的区别和实现机制,需要的朋友可以参考下
    2017-05-05
  • java jackson 将对象转json时,忽略子对象的某个属性操作

    java jackson 将对象转json时,忽略子对象的某个属性操作

    这篇文章主要介绍了java jackson 将对象转json时,忽略子对象的某个属性操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java连接MYSQL数据库的详细步骤

    Java连接MYSQL数据库的详细步骤

    这篇文章主要为大家介绍了Java连接MYSQL数据库的详细步骤,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • SpringCloud实现基于RabbitMQ消息队列的详细步骤

    SpringCloud实现基于RabbitMQ消息队列的详细步骤

    在Spring Cloud框架中,我们可以利用RabbitMQ实现强大而可靠的消息队列系统,本篇将详细介绍如何在Spring Cloud项目中集成RabbitMQ,并创建一个简单的消息队列,感兴趣的朋友一起看看吧
    2024-03-03
  • Java SpringBoot 集成 Redis详解

    Java SpringBoot 集成 Redis详解

    Redis 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API
    2021-10-10

最新评论