• springboot 入门二- 读取配置信息一


    上篇入门中简单介绍下springboot启动使用了大量的默认配置,在实际开发过程中,经常需要启动多个服务,那端口如何手动修改呢? 此篇就是简单介绍相关的配置文件信息。

    Spring Boot允许外部化你的配置,这样你就可以在不同的环境中使用相同的应用程序代码。你可以使用属性文件、YAML文件、环境变量和命令行参数来外部化配置。属性的值获取可以通过注解@Value 、 spring Environment或注解@ConfigurationProperties

    这些方式优先级如下:

    1. @TestPropertySource  / @SpringBootTest#properties  注解用于测试中。
    2. 命令行参数(参数使用--xxx=yyy方式来传递)  
      1. -》 SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar myapp.jar 
      2. -》 java -jar myapp.jar --spring.application.json='{"foo":"bar"}'
      3. -》java -jar myapp.jar --foo=bar  --server.port=9090
    3. ServletConfig 初始化参数
    4. ServletContext 初始化参数
    5. 来自java:comp/env的JNDI属性
    6. Java系统属性(System.getProperties()
    7. 操作系统环境变量
    8. RandomValuePropertySource配置的random.*属性值
      1. my.number=${random.int}
        my.bignumber=${random.long}
        my.uuid=${random.uuid}
        my.number.less.than.ten=${random.int(10)}
        my.number.in.range=${random.int[1024,65536]}
    9. jar包外部的application-{profile}.propertiesapplication.yml(带spring.profile)配置文件
    10. jar包内部的application-{profile}.propertiesapplication.yml(带spring.profile)配置文件
    11. jar包外部的application.propertiesapplication.yml(不带spring.profile)配置文件
    12. jar包内部的application.propertiesapplication.yml(不带spring.profile)配置文件
    13. @Configuration注解类上的@PropertySource
    14. 通过SpringApplication.setDefaultProperties指定的默认属性

     以上只是springboot提供的方式,在日常工作中最常用的就是*.properties 、 *.yml

    一、属性文件配置路径

    SpringApplication将加载application.properties,并将它们添加到Spring环境,可以从以下路径加载(优先级):

    1、当前项目的/config子目录

    2、当前目录

    3、classpath的下的/config

    4、类的classpath 根目录

    注意:

    yml是一个类似展示树状结构层次,比较方便查阅。但它需要比较严格的写法要求:属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的;不能使用tab键。

    /config优先于classpath根目录、 *.properties 优先 *.yml

    二、profile属性文件

    在应用程序中有很多配置项,例如数据库连接地址、日志文件位置、应用服务器配置等等。为了安全与灵活性,推荐将配置文件放在生产环境的服务器上,并严格控制访问权限。在运行应用时可以通过参数指定配置文件。

    springboot提供规则的命名文件读取来区分环境:application-{profile}.properties

    默认的文件是application-default.properties

    设定测试环境:application-test.properties

    只需要在主application.properties加上配置

    spring.profiles.active=test

    就读取测试环境配置属性。

    三、属性占位符

    例如:

    app.name=MyApp
    app.description=${app.name} is a Spring Boot application

    可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)。

    通过如${app.name:默认名称}方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性。

    由于${}方式会被Maven处理。如果你pom继承的spring-boot-starter-parent,Spring Boot 已经将maven-resources-plugins默认的${}方式改为了@ @方式,例如@name@


    四、属性名称匹配规则

    例如有如下配置对象:

    @Component
    @ConfigurationProperties(prefix="person")
    public class ConnectionSettings {
        private String firstName;
    }

    firstName可以使用的属性名如下:

    1. person.firstName,标准的驼峰式命名
    2. person.first-name,虚线(-)分割方式,推荐在.properties.yml配置文件中使用
    3. PERSON_FIRST_NAME,大写下划线形式,建议在系统环境变量中使用

    五、其它默认配置查看及修改

    要调整自己使用的配置,首先要了解springboot maven 引导层级关系

    spring-boot-autoconfigure.jar  此为自动加载各种配置的。

    tomcat服务相关配置: org.springframework.boot.autoconfigure.web.ServerProperties

    spring.mvc的配置:org.springframework.boot.autoconfigure.web.WebMvcProperties

    其它web相关配置都在web目录下相对应的类中。

  • 相关阅读:
    WCF客户端获取服务端异常[自定义异常]
    关于VS2013 Browser Link 新功能
    MVC 单元测试xUnit初探
    ASP.NET MVC4中加入Log4Net日志记录功能
    简洁的MVC思想框架——Nancy(Session的使用)
    iOS开发之快速排序算法
    iOS开发之内购的完整流程
    ios面试数据结构与算法
    iOS开发之读取info.plist配置信息
    iOS开发之ARC与非ARC的设置
  • 原文地址:https://www.cnblogs.com/song27/p/7513893.html
Copyright © 2020-2023  润新知