Spring-Boot学习纪要-2:Spring-Boot配置

  1.SpringBoot的全局配置名固定为*application.properties或*application.yml,更推荐使用yml的方式。

  2.YAML语法:

      1.k:(空格)v      表示一堆键值对(空格必须有)

              2.以空格缩进来控制层级关系,只要左对齐的数据都认为是在一个层级

              3.属性和值大小写敏感

     YAML值写法:

    “”:双引号,不会转义字符串里的特殊字符,比如" a\n b"输出为"a空格 b",单引号则会转义,所以会保持原语义

    对象、Map通过键值对表示,也支持行内写法 a:{k1: v1,k2: v2}

    List支持  -(空格)值 的语法,也支持行内写法 a:[v1,v2,v3]

  3.通过容器引入@ConfigurationProperties(prefix = "a")的标签,可以把以a为前缀的属性全部自动引入。

  4.通过引入spring-boot-configuration-processor的依赖包,可以让写配置时@ConfigurationProperties标签的属性自动提示。

      @Value也可以引入值,对比如下:         

          

  配置输入值可以结合@Validated做校验

  5.通过@ImportResource可以引入Spring配置文件,通过@PropertySource可以加载指定的配置文件,@Bean也可以达到加载组件的效果。也就是说,加载配置中属性,相较于之前@Value、@ConfigurationProperties,还可以使用@PropertySource;加载组件,出了老方式通过配置文件配,再@ImportResource引入,更推荐用@Bean引入的方式。(因为Spring-Boot的理念之一就是要简化配置)

  6.配置支持部分特殊写法,类似于${random.value}这种(个人猜测是SpEL语法)

  7.可以通过Profile结合properties做多环境配置管控,通过spring.profile.active语法标注激活环境。YAML更有强大的 --- 作为文档块分隔符来配合使用。

   8.配置文件加载位置和优先级从高到底为:

    -file:/config/

    -file:/

    -classpath:/config/

    -classpath:/

    (这里也就是我们可以通过外部环境配置来覆盖自带环境配置的原理,或者说提供默认配置及可被覆盖)

  9.外部配置加载顺序优先级从高到低:

    命令行参数

    来自java:comp/env的JNDI属性

    Java系统属性

    操作系统环境变量

    RandomValuePropertySource配置的random.*属性值

    jar包外部的application-{profile}.properties或yml

    jar包内部的application-{profile}.properties或yml

    jar包外部的application.properties或yml

    jar包内部的application.properties或yml

  10.自动配置原理

    通过@EnableAutoConfiguration开启,开启后会去读spring.facteries里面所有的EnableAutoConfiguration类,加入容器环境后会根据标签条件去执行对应的自动配置实现

    相关的标签,@Conditional派生注解

         

猜你喜欢

转载自www.cnblogs.com/ybk2018af/p/12500997.html