zoukankan      html  css  js  c++  java
  • SpringBoot配置文件的加载位置

    1、springboot启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件

    --file:/config/
    --file:/
    --classpath:/config/
    --classpath:/
    

    优先级由高到低,高优先级的配置会覆盖低优先级的配置;
    SpringBoot会从这个四个位置全部加载住配置文件;互补配置;

    我们还可以通过spring.config.location来改变默认的配置文件位置
    项目打包好以后,我们可以使用命令行参数的行驶,启动项目的时候来指定配置文件的新位置;指定的配置文件和默认加载的这些配置文件共同起作用形成互补配置

    2、外部配置加载顺序
    SpringBoot支持多种外部配置方式
    这些方式优先级如下:
    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config
    SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会行成互补配置
    1.命令行参数
    2.来自java:comp/env的JNDI属性
    3.Java系统属性(System.getProperties())
    4.操作系统环境变量
    5.RandomValuePropertySource配置的random.*属性值
    6.jar包 外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    7..jar包 内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    8..jar包 外部的application.properties或application.yml(不带spring.profile)配置文件
    9.jar包 内部的application.properties或application.yml(不带spring.profile)配置文件
    10.@configuration注解类上的@PropertySource
    11.通过SpringApplication.setDefaultProperties指定的默认属性


    3、SpringBoo配置-自动配置原理
    精髓:
    1)、SpringBoot启动会加载大量的自动配置类
    2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;
    3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们不需要再来配置了)
    4)、给容器中自动配置类添加组件的时候,会从properties类当中获取某些属性,我们就可以在 配置文件中指定这些属性的值;

    xxxAutoConfiguration:自动配置类;
    给容器中添加组件
    xxxProperties:封装配置文件中相关属性;

    4、自动配置类必须在一定的条件下才能生效;
    我们怎么知道哪些自动配置类生效;
    我们可以通过启用debug:true属性;来让控制台打印 自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效;

  • 相关阅读:
    Linux 中 java 访问 windows共享目录
    Java中Calender引用类型
    Hadoop MultipleOutputs 结果输出到多个文件夹 出现数据不全,部分文件为空
    转个扯淡的~
    nginx+uwsgi部署python web(web.py)
    关于已经安装python为何还要安装python-dev
    centos7安装mysql5.6
    centos7.0防火墙更换为firewalld
    并发模型(二)——Master-Worker模式
    并发模型(一)——Future模式
  • 原文地址:https://www.cnblogs.com/cykj/p/SpringBoot-configfile.html
Copyright © 2011-2022 走看看