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:\java\jdk\jdk8\jdk\bin\java.exe "-javaagent:D:\java\devolopKit\idea\anZh\IntelliJ IDEA Community Edition 2018.1.4\lib\idea_rt.jar=47197:D:\java\devolopKit\idea\anZh\IntelliJ IDEA Community Edition 2018.1.4\bin" -Dfile.encoding=UTF-8 -classpath D:\java\jdk\jdk8\jdk\jre\lib\charsets.jar;D:\java\jdk\jdk8\jdk\jre\lib\deploy.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\access-bridge-64.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\cldrdata.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\dnsns.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\jaccess.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\jfxrt.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\localedata.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\nashorn.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\sunec.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\sunjce_provider.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\sunmscapi.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\sunpkcs11.jar;D:\java\jdk\jdk8\jdk\jre\lib\ext\zipfs.jar;D:\java\jdk\jdk8\jdk\jre\lib\javaws.jar;D:\java\jdk\jdk8\jdk\jre\lib\jce.jar;D:\java\jdk\jdk8\jdk\jre\lib\jfr.jar;D:\java\jdk\jdk8\jdk\jre\lib\jfxswt.jar;D:\java\jdk\jdk8\jdk\jre\lib\jsse.jar;D:\java\jdk\jdk8\jdk\jre\lib\management-agent.jar;D:\java\jdk\jdk8\jdk\jre\lib\plugin.jar;D:\java\jdk\jdk8\jdk\jre\lib\resources.jar;D:\java\jdk\jdk8\jdk\jre\lib\rt.jar;F:\kewai\SpringCloud\laoqin\chapter_3\imooc_springboot_study\target\classes;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.1.4.RELEASE\spring-boot-starter-web-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter\2.1.4.RELEASE\spring-boot-starter-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot\2.1.4.RELEASE\spring-boot-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.1.4.RELEASE\spring-boot-autoconfigure-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.1.4.RELEASE\spring-boot-starter-logging-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\weijingli\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\weijingli\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;C:\Users\weijingli\.m2\repository\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;C:\Users\weijingli\.m2\repository\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;C:\Users\weijingli\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\weijingli\.m2\repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.1.4.RELEASE\spring-boot-starter-json-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.8\jackson-databind-2.9.8.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.9.8\jackson-core-2.9.8.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.8\jackson-datatype-jdk8-2.9.8.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.8\jackson-datatype-jsr310-2.9.8.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.8\jackson-module-parameter-names-2.9.8.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.1.4.RELEASE\spring-boot-starter-tomcat-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.17\tomcat-embed-core-9.0.17.jar;C:\Users\weijingli\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.17\tomcat-embed-el-9.0.17.jar;C:\Users\weijingli\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.17\tomcat-embed-websocket-9.0.17.jar;C:\Users\weijingli\.m2\repository\org\hibernate\validator\hibernate-validator\6.0.16.Final\hibernate-validator-6.0.16.Final.jar;C:\Users\weijingli\.m2\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;C:\Users\weijingli\.m2\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\Users\weijingli\.m2\repository\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-web\5.1.6.RELEASE\spring-web-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-beans\5.1.6.RELEASE\spring-beans-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-webmvc\5.1.6.RELEASE\spring-webmvc-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-aop\5.1.6.RELEASE\spring-aop-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-context\5.1.6.RELEASE\spring-context-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-expression\5.1.6.RELEASE\spring-expression-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\projectlombok\lombok\1.18.6\lombok-1.18.6.jar;C:\Users\weijingli\.m2\repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-core\5.1.6.RELEASE\spring-core-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\spring-jcl\5.1.6.RELEASE\spring-jcl-5.1.6.RELEASE.jar;C:\Users\weijingli\.m2\repository\com\alibaba\fastjson\1.2.31\fastjson-1.2.31.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-configuration-processor\2.1.4.RELEASE\spring-boot-configuration-processor-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-starter-actuator\2.1.4.RELEASE\spring-boot-starter-actuator-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-actuator-autoconfigure\2.1.4.RELEASE\spring-boot-actuator-autoconfigure-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\org\springframework\boot\spring-boot-actuator\2.1.4.RELEASE\spring-boot-actuator-2.1.4.RELEASE.jar;C:\Users\weijingli\.m2\repository\io\micrometer\micrometer-core\1.1.4\micrometer-core-1.1.4.jar;C:\Users\weijingli\.m2\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;C:\Users\weijingli\.m2\repository\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-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:\kewai\SpringCloud\laoqin\chapter_3\imooc_springboot_study\target\classes started by weijingli in F:\kewai\SpringCloud\laoqin\chapter_3\imooc_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 ''
诸葛