【小家Spring】一篇文章彻底搞懂Spring Boot配置文件的加载顺序(项目内部配置和外部配置)(下)

简介: 【小家Spring】一篇文章彻底搞懂Spring Boot配置文件的加载顺序(项目内部配置和外部配置)(下)

外部配置(非常重要)


先看官网怎么说吧


image.png


中文翻译:


image.png


优先级从高到低(本文只解释较为常用的):


  1. 命令行参数(所以我们java -jar启动时指定的参数优先级最高啊)
    所有的配置都可以在命令行上进行指定;
    多个配置用空格分开; --配置项=值


--server.port=8087 --server.context-path=/abc


  1. Java系统属性(System.getProperties())
    由此课件,Spring启动的时候,默认会把系统的很多属性都默认加载进来。



    @Test
    public void contextLoads() {
        //看看spring容易里面是否存在系统属性
        System.out.println(environment.containsProperty("user.name"));
        System.out.println(environment.containsProperty("java.runtime.name"));
        System.out.println(environment.containsProperty("user.dir"));
        System.out.println(environment.containsProperty("os.name"));
        System.out.println(environment.containsProperty("sun.boot.library.path"));
        //打印系统的所有属性(很多的系统属性)
        Properties properties = System.getProperties();
        for (Map.Entry<Object, Object> entry : properties.entrySet()) {
            System.out.println(entry);
        }
    }
输出:
一路true


Tips:因此你自定义key的时候,应该去避免和系统自带的key重名,否则不起作用。


操作系统环境变量(比如操作系统的username等等,下面讲@Value的时候会介绍这个坑)


RandomValuePropertySource配置的random.*属性值


jar包外部的application-{profile}.properties配置文件


jar包内部的application-{profile}.properties配置文件


jar包外部的application.properties配置文件(此级别在测试环境经常使用。比如就在jar包同级目录放置一个配置文件,就内覆盖jar包内部所有的配置文件了)


jar包内部的application.properties配置文件

由jar包外向jar包内进行寻找,优先加载待profile的,再加载不带profile的。


@Configuration注解类上的@PropertySource(手动指定导入外部配置文件)


通过SpringApplication.setDefaultProperties指定的默认属性,自己程序代码里设置,优先级最低


加载了外部配置,还会记载内部配置吗?


我通过一个小实验来证明


//读取外部配置的key
        System.out.println(environment.getProperty("abcd"));
        //读取内部配置的key
        System.out.println(environment.getProperty("config.icon"));


内部配置:


config.icon=classpath:resource


外部配置:


abcd=abcd


结构如下图:


image.png

我用java -jar启动后,结果是:

内、外部配置的key对应的value都能输出


因此我们可以得出结论:不管内部、外部配置,形成的都是互补配置,都会加载


相关文章
|
8月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
6926 2
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
7月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
7月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
7月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
730 2
|
8月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1563 5
|
消息中间件 设计模式 缓存
Spring相关文章汇总篇【Spring,SpringBoot,SpringCloud等】
因为Spring框架包含的组件比较多,写的博客内容也比较多,虽然有分专栏但是依然不方便查找,所以专门用一篇文章来记录相关文章,会不定期更新。
Spring相关文章汇总篇【Spring,SpringBoot,SpringCloud等】
|
10月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1363 0
|
11月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1214 0
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
540 0
|
7月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
600 4

热门文章

最新文章