SpringBoot构建微服务实战 之 Configuration(二)

SpringBoot构建微服务实战 之 Configuration(二)

上一章我们学习了SpringBoot是怎样读取自定义配置文件和默认配置文件的,本章我们将学习一下SpringBoot 为我们提供哪一些高度自定义读取配置文件中的配置项的方法和途径。


  • 使用 Environment 对象读取配置项
    SpringBoot 封装了一个专门用来读取配置项的对象 Environment。

    • 注入使用

      @Autowired 
      private Environment environment;
      System.out.println("local.ip=" + environment.getProperty("local.ip"));
    • 由 application调用

      ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
      System.out.println("Market.Domain="+context.getEnvironment().getProperty("Market.Domain"))

  • 使用@Value 来将配置项赋值给对象属性

    package com.springBoot.entrance.configuration.statics;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.env.Environment;
    import org.springframework.stereotype.Component;
    @Component
    public class UnitConfiguration {
    
        @Value("${local.port}")
        private String localPort;
    
        /**
         * 使用{@value}是 属性配置项一定要有,可以为空。没有配置项可参考一下方法来实现
         */
        @Value("${local.domain:'En'}")
        private String localDomain;
    
        @Value("${local.area}")
        private String localArea;
    
        @Autowired 
        private Environment environment;
    
        public void show() throws Exception {
            System.out.println("local.ip=" + environment.getProperty("local.ip"));
            System.out.println("local.port=" + localPort);
            System.out.println("local.domain=" + localDomain);
            System.out.println("local.area=" + localArea);
        }
    }
    

    代码解读:

    • 直接注入:直接将配置项赋值给对象属性

      @Value("${local.port}")
      private String localPort;
    • 默认赋值:在JAVA 代码中给属性赋值

      @Value("${local.domain:'En'}")
      private String localDomain;
      @Value("Conctract")
      private String type;

  • 通过将配置项注入对象,然后获取对象属性以达到获取配置项信息。

    • 配置文件信息

      arr.hosts[0]=192.168.100.0
      arr.hosts[1]=192.168.100.1
      arr.hosts[2]=192.168.100.2
    • ListExmaple.java

      package com.springBoot.entrance.configuration.statics;
      
      import java.util.ArrayList;
      import java.util.List;
      
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.stereotype.Component;
      
      @Component
      @ConfigurationProperties(prefix = "arr")
      public class ListExmaple {
      
          private List<String> hosts = new ArrayList<>();
      
          @Override
          public String toString() {
              return "ListExmaple [hosts=" + hosts + "]";
          }
      
          public List<String> getHosts() {
              return hosts;
          }
      
          public void setHosts(List<String> hosts) {
              this.hosts = hosts;
          }
      
      }
      

      代码解读: 通过使用 @ConfigurationProperties 前缀来制定配置项

    • App.java

      @Configuration
      public class App {
      
          public static void main(String[] args) throws Exception {
          ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
          System.out.println(context.getBean(ListExmaple.class));
          }
       }

      代码解读d:入口启用 @Configuration 注解

    • 结果

      ListExmaple [hosts=[192.168.100.0, 192.168.100.1, 192.168.100.2]]

小结

  • SpringBoot 为我们提供了多种方法获取配置项。

  • 一般我们使用将配置项注入对象的方法来获取配置项信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值