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文件也可以顺利运行之。

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

(0)

相关推荐

  • 详解Spring Boot加载properties和yml配置文件

    一.系统启动后注入配置 package com.example.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframewo

  • spring boot装载自定义yml文件

    yml格式的配置文件感觉很人性化,所以想把项目中的.properties都替换成.yml文件,主要springboot自1.5以后就把@configurationProperties中的location参数去掉,各种查询之后发现可以用YamlPropertySourceLoader去装载yml文件,上代码 public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) { ResourceLoader loade

  • SpringBoot获取yml和properties配置文件的内容

    (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @ConfigurationProperties 注解 --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor --> <dependency> <groupId>org.springframework.boot</groupId>

  • springboot如何读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId>

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

    最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子. 首先,需要在pom文件中依赖以下jar包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <d

  • Spring Boot读取自定义配置文件

    @Value 首先,会想到使用@Value注解,该注解只能去解析yaml文件中的简单类型,并绑定到对象属性中去. felord:   phone: 182******32   def:     name: 码农小胖哥     blog: felord.cn     we-chat: MSW_623   dev:     name: 码农小胖哥     blog: felord.cn     we-chat: MSW_623   type: JUEJIN 对于上面的yaml配置,如果我们使用@Va

  • 详解Spring Boot读取配置文件与配置文件优先级

    Spring Boot读取配置文件 1)通过注入ApplicationContext 或者 Environment对象来读取配置文件里的配置信息. package com.ivan.config.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframe

  • Spring Boot读取配置文件内容的3种方式(@Value、Environment和@ConfigurationProperties)

    目录 前言 一.@Value 二.Environment 2.1 注入对象 2.2 调用获取属性的方法 2.3 上述两种方法对比 三.@ConfigurationProperties 3.1 创建一个实体类 3.2 解决警告问题 3.3 修改@ConfigurationProperties 3.4 编写测试代码 总结 前言 Spring Boot中在yaml中编写的自定义变量.数组.对象等,在代码中读取该yaml配置文件中内容的三种方式.实现在代码中运用配置文件(yaml)中自定义的值.yaml

  • Spring Boot打jar包后配置文件的外部优化配置方法

    在未进行任何处理的情况下,Spring Boot会默认使用项目中的 application.properties 或者 application.yml 来读取项目所需配置. 我这里只记录几种自己所用到的. 访问命令行属性 在默认的情况下, SpringApplication 会将任何命令行选项参数(以 - 开头 --server.port=9000)转换为 property 并添加到Spring环境当中. 例如,启动项目的时候指定端口: java -jar analysis-speech-too

  • Spring Boot 在启动时进行配置文件加解密

    寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listeners org.springframework.context.ApplicationListener=\ org.springframework.boot.context.config.ConfigFileApplicationListener,\ ConfigFileApplicationListener 该对象对application.yml进行读取操作

  • Spring Boot 在启动时进行配置文件加解密的方法详解

    寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listeners org.springframework.context.ApplicationListener=\ org.springframework.boot.context.config.ConfigFileApplicationListener,\ ConfigFileApplicationListener 该对象对application.yml进行读取操作

  • Spring Boot读取resources目录文件方法详解

    这篇文章主要介绍了Spring Boot读取resources目录文件方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在Java编码过程中,我们常常希望读取项目内的配置文件,按照Maven的习惯,这些文件一般放在项目的src/main/resources下,因此,合同协议PDF模板.Excel格式的统计报表等模板的存放位置是resources/template/test.pdf,下面提供两种读取方式,它们分别在windows和Linux

  • spring boot读取Excel操作示例

    本文实例讲述了spring boot读取Excel操作.分享给大家供大家参考,具体如下: 首先引入相关依赖 <!--解析office相关文件--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependenc

  • Spring boot读取外部化配置的方法

    目录 1. Properties / YAML 1.1 Environment 1.2 Value注解 2. 自定义Properties文件 3. 其他命令参数 总结 这篇文章我们主要讨论 Spring Boot 的外部化配置功能,该功能主要是通过外部的配置资源实现与代码的相互配合,来避免硬编码,提供应用数据或行为变化的灵活性.本文主要记录读取外部化配置的几种常见的操作方式,相关原理不在此记录. 1. Properties / YAML 我们一般会将相关配置信息写在Properties / YA

随机推荐