zoukankan      html  css  js  c++  java
  • SpringBoot之多Profile配置

    近来在利用闲暇时间巩固下SpringBoot的基本知识,然后自己也做一些笔记,整理下当时所学知识,后面就干脆写到这里来了。

    多Profile配置文件

    在SpringBoot主配置文件编写的时候,文件名可以是application-{profile}.properties/yml。

    默认使用的是application.properties配置文件的配置。

     1 applicaiton.properties 2 application-dev.properties 3 application-test.properties 4 application-prod.properties 

    激活指定配置文件

    1、主配置文件中指定激活的profile

    如果是properties格式的配置文件,那么可以在主配置文件中这样指定激活的profile:

    spring.profiles.active = dev

    如果是yml格式的配置文件,你可以用“---”来划分文档块,每个文档块都被看作是一个profile,你可以在主文档块中指定生效的profile:

     1 server:
     2   prot: 8081
     3 spring:
     4   profiles:
     5     active: dev # 指定激活哪个配置文件
     6 
     7 # yml格式配置文件中,用三个横线来区分文档块
     8 # 第一个文档块表示主文档块,并同时指定后续生效的是哪个文档块
     9 
    10 ---
    11 # 第二个文档块
    12 server:
    13   port: 8082
    14 spring:
    15   profiles: dev # 声明文档块类型
    16 
    17 ---
    18 # 第三个文档块
    19 server:
    20   port: 8083
    21 spring:
    22   profiles: dev

    2、命令行激活

    在实际生产环境中直接使用命令行启动项目,启动的同时可以指定激活的profile:

    java -jar --spring.profiles.active=dev my-spring-boot-app.1.0.0.jar

    3、设置虚拟机参数激活

    同样,你可以通过设置Java虚拟机参数的方式来激活指定profile:

    [vm options:] -Dspring.profiles.action=dev

    IDEA编辑器设置:

    命令行指定的方式和虚拟机参数设置的方式指定,都可以在IDEA的运行设置中进行配置,如下图:

    加载位置与顺序

    SpringBoot启动会扫描以下位置的application.properties/yml文件作为spring boot的默认配置文件:

    file:./config/
    file:./
    classpath:/config/
    classpath:/

    以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容,并形成互补配置;当然,我们也可以通过spring.config.location来改变默认配置。

    上面的:

    • file: 指当前项目根目录
    • classpath: 指当前项目的resources目录

    给出一个图例:

    注意:maven打包是不能把src外面的两个application.properties文件打到jar包里的。

    在项目打包好之后,我们可以通过命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定配置文件和默认加载的这些配置文件会共同生效,并形成互补配置。

    这在运维的时候很有用,因为可以通过命令行的方式指定生效的配置文件,较为灵活。

    外部配置

    SpringBoot还支持多种外部配置方式,生效优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置形成互补配置

    1. 命令行参数
    2. 来自java:comp/env的JNDI属性
    3. Java系统属性(System.getProperties())
    4. 操作系统环境变量
    5. RandomValuePropertySource配置的ramdom.*属性值
    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指定的默认属性

    其实在官网有17种这样的配置说明,可以从下面进入:

    https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-external-config.html

    重点关注上面列举的1、6、7、8、9这几项,生效的配置文件,都是由jar包外向jar包内进行寻找的,优先加载带profile,再加载不带profile的。比如有个application.properties的配置文件和xxx.jar放置在同一个目录,那么项目启动时一定是先加载这个application.properties文件,再去加载xxx.jar里面的配置文件的。

    参考资料

    1、https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/

  • 相关阅读:
    欧拉回路 定理
    UESTC 1087 【二分查找】
    POJ 3159 【朴素的差分约束】
    ZOJ 1232 【灵活运用FLOYD】 【图DP】
    POJ 3013 【需要一点点思维...】【乘法分配率】
    POJ 2502 【思维是朴素的最短路 卡输入和建图】
    POJ 2240 【这题貌似可以直接FLOYD 屌丝用SPFA通过枚举找正权值环 顺便学了下map】
    POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】
    POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
    js 实现slider封装
  • 原文地址:https://www.cnblogs.com/captainad/p/11265558.html
Copyright © 2011-2022 走看看