• 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 ''
    诸葛
  • 相关阅读:
    利用Python imaplib和email模块 读取邮件文本内容及附件内容
    sqlachemy 查询当日数据,
    【Flask】abort和errorhandler、app_errorhandler进行请求中断及自定义异常处理
    CentOS 7 安装与卸载MySQL 5.7
    解决python2.7 UnicodeDecodeError和UnicodeEncodeError问题
    python常用的十进制、16进制、字符串、字节串之间的转换
    Python任务调度模块 – APScheduler,Flask-APScheduler实现定时任务
    flask celery 使用方法
    Linux权限详解 命令之 chmod:修改权限
    MySQL中无GROUP BY直接HAVING的问题【转】
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/14296095.html
Copyright © 2020-2023  润新知