SpringBoot从yml配置文件中读常用参数值实例方法

 更新时间:2019年12月02日 08:19:56   作者:菜弟弟  
在本篇文章里小编给大家整理了关于SpringBoot从yml配置文件中读常用参数值实例方法,有需要的朋友们学习下。

SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将yml中的数据直接读取出来。

1.yml文件(这里设置参数的时候往往设置两层前缀,避免在调用的时候该属性中的部分参数名与计算机中的某些名字冲突)

test:
 person:
  lastName: hello
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: 12}
  lists:
   - lisi
   - zhaoliu
  dog:
   name: 小狗
   age: 12

2.在JavaBean中读取参数值,并且将读取出来的值赋予到指定的属性上

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 *   prefix = "testdemo.person":配置文件中哪个下面的所有属性进行一一映射(yml文件中的参数名要和JavaBean中的属性名保持一致)
 *
 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 *
 */
@Component
@ConfigurationProperties(prefix = "testdemo.person")
public class Person {

  private String lastName;
  private Integer age;
  private Boolean boss;
  private Date birth;

  private Map<String,Object> maps;
  private List<Object> lists;
  private Dog dog;
}

 3.pom.xml文件中导入依赖配置(注:这里可能需要启动一下项目,使之生效)

<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>

4.@value 注解获取yml配置文件中的数据,以及@Validated进行数据校验

@Component
@Validated
public class Person {

  /**
   * <bean class="Person">
   *   <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>   * <bean/>
   */

  //lastName必须是邮箱格式
  @Email
  @Value("${person.last-name}")
  private String lastName;
  @Value("#{11*2}")
  private Integer age;
  @Value("true")
  private Boolean boss;

  private Date birth;
  private Map<String,Object> maps;
  private List<Object> lists;
  private Dog dog;

5.@ConfigurationProperties(prefix = "person") 和 @value的区别

|          | @ConfigurationProperties       | @Value |
| ----------          |------------------------          | ------ |
| 功能         | 批量注入配置文件中的属性    | 一个个指定 |
| 松散绑定(松散语法)   | 支持           | 不支持 |
| SpEL          | 不支持          | 支持 |
| JSR303数据校验     | 支持           | 不支持 |
| 复杂类型封装       | 支持           | 不支持 |

6.总结

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

以上就是本次介绍的全部相关知识点,感谢大家的学习和对脚本之家的支持。

相关文章

  • java实现微信H5支付方法详解

    java实现微信H5支付方法详解

    本篇文章主要介绍了java实现微信H5支付方法详解,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • Spring Boot实现微信小程序登录

    Spring Boot实现微信小程序登录

    这篇文章主要为大家详细介绍了Spring Boot实现微信小程序登录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • java实现收藏功能

    java实现收藏功能

    这篇文章主要为大家详细介绍了java实现收藏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • java编译后的文件出现xx$1.class的原因及解决方式

    java编译后的文件出现xx$1.class的原因及解决方式

    这篇文章主要介绍了java编译后的文件出现xx$1.class的原因及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • SpringBoot传递单一参数时@RequestParam和@RequestBody的区别小结

    SpringBoot传递单一参数时@RequestParam和@RequestBody的区别小结

    用SpringBoot框架做项目时,经常需要前端给后端传递参数,本文主要介绍了SpringBoot传递单一参数时@RequestParam和@RequestBody的区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • IntelliJ IDEA里找不到javax.servlet的jar包的解决方法

    IntelliJ IDEA里找不到javax.servlet的jar包的解决方法

    这篇文章主要介绍了IntelliJ IDEA里找不到javax.servlet的jar包的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 解决线程异常WAITING(parking)问题

    解决线程异常WAITING(parking)问题

    文章总结:在项目中线程数量持续增长无法回收,导致服务器卡死和内存不足,通过分析发现是由于自定义线程池未执行shutdown()关闭导致线程泄漏
    2024-11-11
  • java实现ATM机系统(2.0版)

    java实现ATM机系统(2.0版)

    这篇文章主要为大家详细介绍了java实现ATM机系统2.0版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Java超过long类型的数据表示方法

    Java超过long类型的数据表示方法

    这篇文章主要给大家介绍Java超过long类型的数据如何表示,在 Java 中,如果需要表示超过 long 类型范围的数据,可以使用 BigInteger 类,BigInteger 是 Java 提供的一个用于处理任意精度整数的类,它可以表示非常大或非常小的整数,需要的朋友可以参考下
    2023-09-09
  • Mybatis的核心架构及源码解读

    Mybatis的核心架构及源码解读

    这篇文章主要介绍了Mybatis的核心架构及源码解读,mybatis是一款半自动化的持久层框架,它封装了JDBC操作,支持定制化SQL,高级映射,但它的数据库无关性较低,需要的朋友可以参考下
    2023-08-08

最新评论