前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot系列 – 4. 读取配置文件(application.yml)中的属性值

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

作者头像
Java架构师必看
发布2020-07-17 09:42:47
2.4K0
发布2020-07-17 09:42:47
举报
文章被收录于专栏:Java架构师必看Java架构师必看

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

代码语言:javascript
复制
<!-- 支持 @ConfigurationProperties 注解 --> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-configuration-processor</artifactId> 
  <optional>true</optional> 
 </dependency> 

2、配置文件(application.yml)中配置各个属性的值:

代码语言:javascript
复制
 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来接收配置信息:

代码语言:javascript
复制
 @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、单元测试用例:

代码语言:javascript
复制
 @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()));  
     }  

测试结果:

代码语言:javascript
复制
 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架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档