Spring Cloud微服务实战 打造企业级优惠券系统 3-4 SpringBoot配置文件加载顺序

0    课程地址

https://coding.imooc.com/lesson/380.html#mid=28272

1    浓缩精华
1.1  3.1,3.2
2    个人关注
2.1  3.3
3    课程内容
3.1  同一目录下的application和bootstrap
  • bootstrap优先级高于application,优先被加载
  • bootstrap 用于应用程序上下文的引导阶段,由父ApplicationContext加载bootstrap是系统级别的配置(不变的参数),
  • application是应用级别的配置
3.2  不同位置的配置文件加载顺序(优先级)
  • sfile:/config/-优先级最高(项目根路径下的config)
  • file:./-优先级第二(项目根路径下)
  • classpath:/config/-优先级第三(项目resources/config下)
  • classpath/-优先级第四(项目resources目录下)高优先级覆盖低优先级相同配置多个配置文件互补
3.3  注意事项
  •  跟路径下的配置文件不会被打包
  • 不同位置的配置文件优先级顺序最好将 配置spring.profiles.active  排除在外
4    代码演练
4.1  配置application.xml demo
  • application.yml配置
spring:
  application:
    name: imooc_springboot_study

server:
#端口号
  port: 8081
  servlet:
  #前缀
    context-path: /imooc
  • 启动类
    package com.imooc.springboot.application;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    
    /**
     * SpringBootApplication
     *
     * @author 魏豆豆
     * @date 2021/1/13
     */
    @SpringBootApplication
    public class SpringBootStudyApplication {
        public static void main(String [] args){
            //第一种方式启动
            SpringApplication.run(SpringBootStudyApplication.class,args);
    
            //第二种方式启动
            /*SpringApplication springApplication = new SpringApplication(SpringBootStudyApplication.class);
            //关掉打印logo相关日志
            springApplication.setBannerMode(Banner.Mode.OFF);
            //非wub启动,控制台启动后会关闭,不会一直保持开启状态
            springApplication.setWebApplicationType(WebApplicationType.NONE);
            springApplication.run(args);*/
    
            //第三种方式启动 链式调用
           /* new SpringApplicationBuilder(SpringBootStudyApplication.class)
                    //.bannerMode(Banner.Mode.OFF)
                    .web(WebApplicationType.NONE).run(args);*/
        }
    
    }
  • 打印日志:
    D:javajdkjdk8jdkinjava.exe "-javaagent:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4libidea_rt.jar=47197:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4in" -Dfile.encoding=UTF-8 -classpath D:javajdkjdk8jdkjrelibcharsets.jar;D:javajdkjdk8jdkjrelibdeploy.jar;D:javajdkjdk8jdkjrelibextaccess-bridge-64.jar;D:javajdkjdk8jdkjrelibextcldrdata.jar;D:javajdkjdk8jdkjrelibextdnsns.jar;D:javajdkjdk8jdkjrelibextjaccess.jar;D:javajdkjdk8jdkjrelibextjfxrt.jar;D:javajdkjdk8jdkjrelibextlocaledata.jar;D:javajdkjdk8jdkjrelibext
    ashorn.jar;D:javajdkjdk8jdkjrelibextsunec.jar;D:javajdkjdk8jdkjrelibextsunjce_provider.jar;D:javajdkjdk8jdkjrelibextsunmscapi.jar;D:javajdkjdk8jdkjrelibextsunpkcs11.jar;D:javajdkjdk8jdkjrelibextzipfs.jar;D:javajdkjdk8jdkjrelibjavaws.jar;D:javajdkjdk8jdkjrelibjce.jar;D:javajdkjdk8jdkjrelibjfr.jar;D:javajdkjdk8jdkjrelibjfxswt.jar;D:javajdkjdk8jdkjrelibjsse.jar;D:javajdkjdk8jdkjrelibmanagement-agent.jar;D:javajdkjdk8jdkjrelibplugin.jar;D:javajdkjdk8jdkjrelib
    esources.jar;D:javajdkjdk8jdkjrelib
    t.jar;F:kewaiSpringCloudlaoqinchapter_3imooc_springboot_study	argetclasses;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter-web2.1.4.RELEASEspring-boot-starter-web-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter2.1.4.RELEASEspring-boot-starter-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot2.1.4.RELEASEspring-boot-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-autoconfigure2.1.4.RELEASEspring-boot-autoconfigure-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter-logging2.1.4.RELEASEspring-boot-starter-logging-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar;C:Usersweijingli.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Usersweijingli.m2
    epositoryorgapachelogginglog4jlog4j-to-slf4j2.11.2log4j-to-slf4j-2.11.2.jar;C:Usersweijingli.m2
    epositoryorgapachelogginglog4jlog4j-api2.11.2log4j-api-2.11.2.jar;C:Usersweijingli.m2
    epositoryorgslf4jjul-to-slf4j1.7.26jul-to-slf4j-1.7.26.jar;C:Usersweijingli.m2
    epositoryjavaxannotationjavax.annotation-api1.3.2javax.annotation-api-1.3.2.jar;C:Usersweijingli.m2
    epositoryorgyamlsnakeyaml1.23snakeyaml-1.23.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter-json2.1.4.RELEASEspring-boot-starter-json-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksoncorejackson-databind2.9.8jackson-databind-2.9.8.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksoncorejackson-annotations2.9.0jackson-annotations-2.9.0.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksoncorejackson-core2.9.8jackson-core-2.9.8.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksondatatypejackson-datatype-jdk82.9.8jackson-datatype-jdk8-2.9.8.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksondatatypejackson-datatype-jsr3102.9.8jackson-datatype-jsr310-2.9.8.jar;C:Usersweijingli.m2
    epositorycomfasterxmljacksonmodulejackson-module-parameter-names2.9.8jackson-module-parameter-names-2.9.8.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter-tomcat2.1.4.RELEASEspring-boot-starter-tomcat-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgapache	omcatembed	omcat-embed-core9.0.17	omcat-embed-core-9.0.17.jar;C:Usersweijingli.m2
    epositoryorgapache	omcatembed	omcat-embed-el9.0.17	omcat-embed-el-9.0.17.jar;C:Usersweijingli.m2
    epositoryorgapache	omcatembed	omcat-embed-websocket9.0.17	omcat-embed-websocket-9.0.17.jar;C:Usersweijingli.m2
    epositoryorghibernatevalidatorhibernate-validator6.0.16.Finalhibernate-validator-6.0.16.Final.jar;C:Usersweijingli.m2
    epositoryjavaxvalidationvalidation-api2.0.1.Finalvalidation-api-2.0.1.Final.jar;C:Usersweijingli.m2
    epositoryorgjbossloggingjboss-logging3.3.2.Finaljboss-logging-3.3.2.Final.jar;C:Usersweijingli.m2
    epositorycomfasterxmlclassmate1.4.0classmate-1.4.0.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-web5.1.6.RELEASEspring-web-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-beans5.1.6.RELEASEspring-beans-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-webmvc5.1.6.RELEASEspring-webmvc-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-aop5.1.6.RELEASEspring-aop-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-context5.1.6.RELEASEspring-context-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-expression5.1.6.RELEASEspring-expression-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgprojectlomboklombok1.18.6lombok-1.18.6.jar;C:Usersweijingli.m2
    epositoryorgslf4jslf4j-api1.7.26slf4j-api-1.7.26.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-core5.1.6.RELEASEspring-core-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkspring-jcl5.1.6.RELEASEspring-jcl-5.1.6.RELEASE.jar;C:Usersweijingli.m2
    epositorycomalibabafastjson1.2.31fastjson-1.2.31.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-configuration-processor2.1.4.RELEASEspring-boot-configuration-processor-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-starter-actuator2.1.4.RELEASEspring-boot-starter-actuator-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-actuator-autoconfigure2.1.4.RELEASEspring-boot-actuator-autoconfigure-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryorgspringframeworkootspring-boot-actuator2.1.4.RELEASEspring-boot-actuator-2.1.4.RELEASE.jar;C:Usersweijingli.m2
    epositoryiomicrometermicrometer-core1.1.4micrometer-core-1.1.4.jar;C:Usersweijingli.m2
    epositoryorghdrhistogramHdrHistogram2.1.9HdrHistogram-2.1.9.jar;C:Usersweijingli.m2
    epositoryorglatencyutilsLatencyUtils2.0.3LatencyUtils-2.0.3.jar com.imooc.springboot.application.SpringBootStudyApplication
    
      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.1.4.RELEASE)
    
    2021-03-12 06:13:02.446  INFO 13696 --- [           main] c.i.s.a.SpringBootStudyApplication       : Starting SpringBootStudyApplication on DESKTOP-A08HONB with PID 13696 (F:kewaiSpringCloudlaoqinchapter_3imooc_springboot_study	argetclasses started by weijingli in F:kewaiSpringCloudlaoqinchapter_3imooc_springboot_study)
    2021-03-12 06:13:02.446  INFO 13696 --- [           main] c.i.s.a.SpringBootStudyApplication       : No active profile set, falling back to default profiles: default
    2021-03-12 06:13:04.971 ERROR 13696 --- [           main] o.a.catalina.core.AprLifecycleListener   : An incompatible version [1.1.32] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
    2021-03-12 06:13:05.942 ERROR 13696 --- [           main] o.a.catalina.core.AprLifecycleListener   : An incompatible version [1.1.32] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
    2021-03-12 06:13:06.143  INFO 13696 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
    2021-03-12 06:13:06.158 ERROR 13696 --- [           main] o.a.catalina.core.AprLifecycleListener   : An incompatible version [1.1.32] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
    2021-03-12 06:13:06.174  INFO 13696 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2021-03-12 06:13:06.174  INFO 13696 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
    2021-03-12 06:13:06.375  INFO 13696 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/imooc]  : Initializing Spring embedded WebApplicationContext
    2021-03-12 06:13:06.375  INFO 13696 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3818 ms
    2021-03-12 06:13:07.311  INFO 13696 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2021-03-12 06:13:07.711  INFO 13696 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
    2021-03-12 06:13:07.859  INFO 13696 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path '/imooc'
    2021-03-12 06:13:07.859  INFO 13696 --- [           main] c.i.s.a.SpringBootStudyApplication       : Started SpringBootStudyApplication in 6.339 seconds (JVM running for 7.18)
4.2  多个配置文件选择
  • application.yml
    spring:
      profiles:
     #  active: prod 生效的配置文件
        active: dev
      application:
        name: imooc_springboot_study
    
    server:
    #端口号
    #  port: 8081
    #  servlet:
    #    context-path: /imooc
  • application-dev.yml
    server:
    #端口号
      port: 8082
      servlet:
        context-path: /imooc-dev
  • 启动类
    package com.imooc.springboot.application;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    
    /**
     * SpringBootApplication
     *
     * @author 魏豆豆
     * @date 2021/1/13
     */
    @SpringBootApplication
    public class SpringBootStudyApplication {
        public static void main(String [] args){
            //第一种方式启动
            //SpringApplication.run(SpringBootStudyApplication.class,args);
    
            //第二种方式启动
            /*SpringApplication springApplication = new SpringApplication(SpringBootStudyApplication.class);
            //关掉打印logo相关日志
            springApplication.setBannerMode(Banner.Mode.OFF);
            //非wub启动,控制台启动后会关闭,不会一直保持开启状态
            springApplication.setWebApplicationType(WebApplicationType.NONE);
            springApplication.run(args);*/
    
            //第三种方式启动 链式调用
           new SpringApplicationBuilder(SpringBootStudyApplication.class)
                    //.bannerMode(Banner.Mode.OFF)
                   // .web(WebApplicationType.NONE)
                   .run(args);
        }
    
    }
  • 打印日志
    2021-03-12 06:54:25.000  INFO 15908 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8082 (http)
    2021-03-12 06:54:26.972  INFO 15908 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8082 (http) with context path '/imooc-dev'
4.3  不同路径下优先级顺序测试
  • 根路径 config文件夹下:application.xml
    server:
    #端口号
      port: 8085
    #  servlet:
    #    context-path: /imooc
  • 常规resource路径下:application.xml
    spring:
     # profiles:
     #  active: prod
     #注意:这里不能有profiles active: dev,否则 按application-dev配置文件的端口号
     #   active: dev
      application:
        name: imooc_springboot_study
    
    server:
    #端口号
    port: 8081
    #  servlet:
    #    context-path: /imooc
  • 启动类
    package com.imooc.springboot.application;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    
    /**
     * SpringBootApplication
     *
     * @author 魏豆豆
     * @date 2021/1/13
     */
    @SpringBootApplication
    public class SpringBootStudyApplication {
        public static void main(String [] args){
            //第一种方式启动
            //SpringApplication.run(SpringBootStudyApplication.class,args);
    
            //第二种方式启动
            /*SpringApplication springApplication = new SpringApplication(SpringBootStudyApplication.class);
            //关掉打印logo相关日志
            springApplication.setBannerMode(Banner.Mode.OFF);
            //非wub启动,控制台启动后会关闭,不会一直保持开启状态
            springApplication.setWebApplicationType(WebApplicationType.NONE);
            springApplication.run(args);*/
    
            //第三种方式启动 链式调用
           new SpringApplicationBuilder(SpringBootStudyApplication.class)
                    //.bannerMode(Banner.Mode.OFF)
                   // .web(WebApplicationType.NONE)
                   .run(args);
        }
    
    }
  • 打印日志
    2021-03-12 07:17:05.080  INFO 3240 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8085 (http) with context path ''
诸葛
原文地址:https://www.cnblogs.com/1446358788-qq/p/14296095.html