专栏首页Java架构师必看Spring Boot系列 – 4. 读取配置文件(application.yml)中的属性值

Spring Boot系列 – 4. 读取配置文件(application.yml)中的属性值

在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1、引入依赖:

<!-- 支持 @ConfigurationProperties 注解 --> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-configuration-processor</artifactId> 
  <optional>true</optional> 
 </dependency> 

2、配置文件(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  

3、创建一个bean来接收配置信息:

 @Component 
 @ConfigurationProperties(prefix="myProps") //接收application.yml中的myProps下面的属性 
 public class MyProps {  
  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;  
     }  
  
  //String类型的一定需要setter来接收属性值;maps, collections, 和 arrays 不需要 
  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;  
     }  
 }  

启动后,这个bean里面的属性就会自动接收配置的值了。

4、单元测试用例:

 @Autowired 
  private MyProps myProps;   
  
  @Test 
  public void propsTest() throws JsonProcessingException {  
         System.out.println("simpleProp: " + myProps.getSimpleProp());  
         System.out.println("arrayProps: " + objectMapper.writeValueAsString(myProps.getArrayProps()));  
         System.out.println("listProp1: " + objectMapper.writeValueAsString(myProps.getListProp1()));  
         System.out.println("listProp2: " + objectMapper.writeValueAsString(myProps.getListProp2()));  
         System.out.println("mapProps: " + objectMapper.writeValueAsString(myProps.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"}  

源代码参考:https://github.com/xujijun/my-spring-boot

本文由来源 hemin1003,由 system_mush 整理编辑,其版权均为 hemin1003 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 组合实体模式

    组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新...

    Java架构师必看
  • Android增量代码测试覆盖率工具

    美团点评业务快速发展,新项目新业务不断出现,在项目开发和测试人员不足、开发同学粗心的情况下,难免会出现少测漏测的情况,如何保证新增代码有足够的测试覆盖率是我们需...

    Java架构师必看
  • application.yml与bootstrap.yml的区别

    Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 applic...

    Java架构师必看
  • API接口设计规范

    说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法...

    Java旅途
  • 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?

    说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法...

    芋道源码
  • 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?

    在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规...

    Java团长
  • 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?

    在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规...

    架构师修炼
  • 7-Flink的分布式缓存

    Flink提供了一个分布式缓存,类似于hadoop,可以使用户在并行函数中很方便的读取本地文件,并把它放在taskmanager节点中,防止task重复拉取。

    王知无
  • 当我遵循了这 16 条规范写代码,同事只对我说了三个字: 666

    Many of the happiest people are those who own the least. But are we really so ha...

    良月柒
  • 如何更规范化编写 Java 代码

    如何更规范化编写 Java 代码的重要性想必毋需多言,其中最重要的几点当属提高代码性能、使代码远离 Bug、令代码更优雅。

    淡定的蜗牛

扫码关注云+社区

领取腾讯云代金券