SpringBoot配置文件的加载位置实例详解

 更新时间:2018年09月06日 09:51:24   作者:熊熊爱绵羊  
springboot采纳了建立生产就绪spring应用程序的观点。 在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。接下来通过本文给大家介绍SpringBoot配置文件的加载位置,感兴趣的朋友一起看看吧

springboot采纳了建立生产就绪spring应用程序的观点。 Spring Boot优先于配置的惯例,旨在让您尽快启动和运行。在一般情况下,我们不需要做太多的配置就能够让spring boot正常运行。在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。

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

-file:./config/   

-file:./

-classpath:/config/

-classpath:/

即根目录下的config目录下,然后是 根目录下,然后是classpath路径下的config目录下,最后是classpath路径下。

优先级由高到低,高优先级的配置会覆盖低优先级的配置。

eg.假如:根目录下的config目录下定义端口为8084,  根目录下定义端口为8083 ,classpath路径下的config目录定义端口为8082,classpath路径下定义端口为8081,最后启动,启动的端口为8084 ,高优先级会覆盖低优先级。

注意: 并不是高优先级的被加载了,低优先级的就不会再加载,实际上是SpringBoot会从这四个位置全部加载主配置文件,并且还能产生互相配置的效果。

例如:  其它三个位置的主配置文件仅仅定义了端口,在最低优先级的classpath路径下的配置文件中配置项目访问路径,如下:

定义一个简单的Controller ,用来测出访问路径。

 

请看:访问路径变为 :

除此外,我们还可以通过spring.config.location来改变默认的配置文件位置。

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定默认加载的这些配置文件共同起作用形成互补配置。

eg : 在 G盘目录下,创建一个application.properties文件(yml也可以),定义端口为8085 

打包项目,启动命令行:java -jar  spring-boot-02-config-02.0.0.1-SNAPSHOT.jar  --spring.config.location=G:/application.properties     回车运行。

浏览器访问: http:localhost:8005/boot02/hello  ,显然外部指定的配置文件生效了,并且与之前的主配置文件形成了互补配置

 

外部配置加载顺序

SpringBoot也可以从以下位置加载配置,优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置形成互补配置。

 1. 命令行参数

     eg:   java -jar  spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8087

 2. 来自java:comp/env的NDI属性

 3. Java系统属性(System.getProperties() )

 4. 操作系统环境变量

 5. RandomValuePropertySource配置的random.*属性值

 ---- 由jar包外向jar包内进行寻找:

   优先加载带profile

 6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    将打好的jar包放在一个目录下,比如叫做 hello的文件夹,然后再该文件夹下新建一个名为application.yml的文件,其中指定

  port为8088 ,访问路径为/boot ,然后命令行直接启动项目。java  -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar

浏览器通过  localhost:8088/boot/hello 可以正常访问,表示同级目录下的配置文件生效了。

访问情况如下:

 7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

 8. jar包外部的application.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指定的默认属性。

所有支持的配置加载来源:

参考官方文档   SpringBoot外部配置

总结

以上所述是小编给大家介绍的使用SpringBoot配置文件的加载位置实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • spring @Cacheable扩展实现缓存自动过期时间及自动刷新功能

    spring @Cacheable扩展实现缓存自动过期时间及自动刷新功能

    用过spring cache的朋友应该会知道,Spring Cache默认是不支持在@Cacheable上添加过期时间的,虽然可以通过配置缓存容器时统一指定,本文主要介绍了如何基于spring @Cacheable扩展实现缓存自动过期时间以及缓存即将到期自动刷新,
    2024-02-02
  • Spring sentinel哨兵模式相关原理解析

    Spring sentinel哨兵模式相关原理解析

    这篇文章主要介绍了Spring sentinel哨兵模式相关原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot内部外部配置文件加载顺序解析

    SpringBoot内部外部配置文件加载顺序解析

    这篇文章主要介绍了SpringBoot内部外部配置文件加载顺序解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Spring中如何使用@Value注解实现给Bean属性赋值

    Spring中如何使用@Value注解实现给Bean属性赋值

    这篇文章主要介绍了Spring中如何使用@Value注解实现给Bean属性赋值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot@Profile注解和Spring EL(多环境注入)

    SpringBoot@Profile注解和Spring EL(多环境注入)

    为了方便, Spring还提供了 Profile机制, 使我们可以很方便地实现各个环境之间的切换,在使用DI来依赖注入的时候,能够根据@profile标明的环境,将注入符合当前运行环境的相应的bean,本文通过示例代码介绍SpringBoot@Profile注解和Spring EL,需要的朋友可以参考下
    2024-02-02
  • Java单例模式实现的几种方式

    Java单例模式实现的几种方式

    这篇文章主要介绍了Java单例模式实现的几种方式的相关资料,需要的朋友可以参考下
    2016-09-09
  • spring boot测试打包部署的方法

    spring boot测试打包部署的方法

    spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发、调试、打包到最后的投产上线,感兴趣的朋友一起看看吧
    2018-01-01
  • Java环境变量的设置方法(图文教程)

    Java环境变量的设置方法(图文教程)

    想要成功配置Java的环境变量,那肯定就要安装JDK,才能开始配置的。
    2013-05-05
  • SpringBoot整合MongoDB实现文件上传下载删除

    SpringBoot整合MongoDB实现文件上传下载删除

    这篇文章主要介绍了SpringBoot整合MongoDB实现文件上传下载删除的方法,帮助大家更好的理解和学习使用SpringBoot框架,感兴趣的朋友可以了解下
    2021-05-05
  • 浅谈Hibernate n+1问题

    浅谈Hibernate n+1问题

    这篇文章主要介绍了浅谈Hibernate n+1问题,怎么解决n+1问题,文中也作了简要分析,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论