当前位置: 首页 > wzjs >正文

文登市城乡建设局网站软文营销方法有哪些

文登市城乡建设局网站,软文营销方法有哪些,杭州网站建设哪家权威,网站开发设计知乎摘要 本文详细阐述了 Spring Cloud 和 Spring Boot 项目中配置文件的加载顺序。Spring Cloud 项目因引入 bootstrap.yml 和远程配置中心,加载顺序更复杂。其顺序依次为命令行参数、SPRING_APPLICATION_JSON、系统属性、操作系统环境变量、远程配置中心、bootstrap.…

摘要

本文详细阐述了 Spring Cloud 和 Spring Boot 项目中配置文件的加载顺序。Spring Cloud 项目因引入 bootstrap.yml 和远程配置中心,加载顺序更复杂。其顺序依次为命令行参数、SPRING_APPLICATION_JSON、系统属性、操作系统环境变量、远程配置中心、bootstrap.yml、本地 application.yml(按特定顺序)、jar 包内 application.yml、@PropertySource 注解配置文件和默认配置。bootstrap.yml 用于启动阶段配置,application.yml 用于主要业务配置。还探讨了远程配置中心、如何确保本地 application.yml 不被远程覆盖以及相关总结。Spring Boot 项目配置文件加载顺序相对简单,包括默认顺序、@PropertySource 加载外部配置、多文件加载和单元测试时的配置等。

1. SpringCloud项目配置文件加载顺序

Spring Cloud 项目中,配置文件的加载顺序比普通 Spring Boot 项目更复杂,主要是因为 bootstrap.yml远程配置中心 的加入。

1.1. Spring Cloud 配置文件加载顺序

Spring Cloud 的配置加载顺序 从高到低 如下:

  1. 命令行参数(最高优先级)
  2. SPRING_APPLICATION_JSON(环境变量或 -Dspring.application.json
  3. 系统属性System.getProperties()
  4. 操作系统环境变量System.getenv()
  5. 远程 Spring Cloud Config 配置中心(如果启用)
  6. bootstrap.properties / bootstrap.yml(优先级高于 application.yml
  7. 本地 application.properties / application.yml(按以下顺序)
    • file:./config/(外部 config 目录)
    • file:./(项目根目录)
    • classpath:/config/resources/config/ 目录)
    • classpath:/resources/ 目录)
  1. 打包在 jar 内的 application.properties / application.yml
  2. @PropertySource 注解的配置文件
  3. 默认配置(Spring 内置的默认值)

1.2. bootstrap.ymlapplication.yml 的区别

配置文件

加载时机

作用

适用场景

bootstrap.yml

最先加载(比 application.yml

早)

用于 Spring Boot 启动阶段的配置,如远程配置中心加密密钥多环境动态配置

Spring Cloud 项目(使用 Spring Cloud Config

时)

application.yml

bootstrap.yml

之后加载

用于应用的主要业务配置,如数据库、日志、端口、服务名称等

所有 Spring Boot 和 Spring Cloud 项目

1.3. 远程 Spring Cloud Config 配置中心

如果项目启用了 Spring Cloud Config(远程配置中心),那么:

  1. 远程配置会覆盖本地 application.ymlapplication.properties
  2. 如果远程配置中心启用了 native 模式(本地文件存储),它的优先级相当于 bootstrap.yml,但仍然会覆盖 application.yml
  3. 本地 application.yml 仍然有效,但优先级低于远程配置,除非使用 spring.cloud.config.override-none=true 来禁用远程配置覆盖。

1.4. 如何确保本地 application.yml 不被远程覆盖?

如果不想让远程配置覆盖本地配置:

spring:cloud:config:override-none: true  # 让本地配置优先,不被远程覆盖

如果需要让本地配置部分覆盖远程配置:

spring:cloud:config:allow-override: true   # 允许本地覆盖远程配置override-system-properties: false  # 避免系统属性被覆盖
  • bootstrap.yml 优先级高于 application.yml,用于读取远程配置、加密密钥、动态环境变量等。
  • 远程配置中心的配置 优先级比 本地 application.yml 更高,可以通过 spring.cloud.config.override-none=true 调整。
  • application.propertiesapplication.yml 先加载,如果两者有相同的 key,application.properties 的值会覆盖 application.yml 的值。
  • 外部 config/ 目录下的配置文件优先级比 classpath:/ 下的高,这样可以在不修改 jar 的情况下更新配置。

1.5. SpringCloud项目总结

  • bootstrap.yml 优先级高于 application.yml,用于读取远程配置、加密密钥、动态环境变量等。
  • 远程配置中心的配置 优先级比 本地 application.yml 更高,可以通过 spring.cloud.config.override-none=true 调整。
  • application.propertiesapplication.yml 先加载,如果两者有相同的 key,application.properties 的值会覆盖 application.yml 的值。
  • 外部 config/ 目录下的配置文件优先级比 classpath:/ 下的高,这样可以在不修改 jar 的情况下更新配置。

1.6. spring cloud 项目中bootstrap.yml 没有 会去加载application.yml

Spring Cloud 项目中,如果 没有 bootstrap.yml,Spring 仍然会按照 普通 Spring Boot 项目的加载顺序 来加载 application.yml,但会缺少 bootstrap.yml 处理的特殊功能

1.6.1. bootstrap.yml 的作用

bootstrap.yml 主要用于 Spring Cloud 相关的初始化配置,它比 application.yml 先加载,通常用于:

  1. Spring Cloud Config 远程配置中心的连接信息
  2. 动态环境配置(如 spring.profiles.active
  3. 加密/解密(如 spring.cloud.config.server.encrypt.enabled=true
  4. 自定义 PropertySource(如 Nacos、Apollo)

如果 bootstrap.yml缺失,但应用依赖了远程配置中心(如 Spring Cloud Config Server),那么:

  • 远程配置将不会被加载
  • 应用可能无法正确启动

1.6.2. 没有 bootstrap.yml,Spring Cloud 会如何加载配置?

如果 bootstrap.yml不存在,Spring Boot 仍然会加载 application.yml,但不会提前初始化 Spring Cloud 组件,导致:

  1. 远程配置中心(Spring Cloud Config Server)不会生效
  2. Spring Cloud 相关配置(如 spring.cloud.*)不会在应用启动前被解析
  3. application.yml 仍然会按照正常的 Spring Boot 加载顺序生效

1.6.3. application.yml 是否可以代替 bootstrap.yml

可以,但有一定限制:

  • 你可以把 bootstrap.yml 里的配置放到 application.yml,但它会比远程配置中心的配置优先级低,导致某些 Spring Cloud 组件可能无法正常初始化。
  • 解决方案
    • 如果不用远程配置中心:可以直接把 bootstrap.yml 的内容合并到 application.yml,一般不会有问题。
    • 如果需要远程配置,但不想用 bootstrap.yml,可以用 spring.config.import 手动指定:
spring:config:import: "optional:configserver:http://config-server:8888"

这样即使没有 bootstrap.yml,Spring Boot 仍然可以加载远程配置。

1.6.4. 推荐的做法

场景

是否需要 bootstrap.yml

解决方案

普通 Spring Boot 项目

❌ 不需要

直接使用 application.yml

使用 Spring Cloud Config 远程配置

✅ 需要

spring.cloud.config.uri

bootstrap.yml

使用 Nacos/Apollo 作为配置中心

✅ 需要

bootstrap.yml

配置 spring.cloud.nacos.config.server-addr

不想使用 bootstrap.yml

,但需要远程配置

⚠️ 可选

application.yml

里用 spring.config.import

1.6.5. spring cloud 项目中bootstrap.yml、application.yml总结

  • 如果没有 bootstrap.yml,Spring Cloud 仍然会加载 application.yml,但不会预加载远程配置中心的配置
  • bootstrap.yml 主要用于 Spring Cloud 组件的初始化,特别是远程配置相关功能。如果你的项目不依赖远程配置,可以直接用 application.yml
  • 可以用 spring.config.import 代替 bootstrap.yml,但部分 Spring Cloud 组件可能无法正确初始化。

2. Spring Boot项目配置文件加载顺序

2.1. Spring Boot 默认的加载顺序

Spring Boot 会按照以下顺序加载配置(从高优先级到低优先级):

  1. 命令行参数(最高优先级)
  2. SPRING_APPLICATION_JSON(环境变量或系统属性中的 JSON 配置)
  3. 系统属性System.getProperties()
  4. 操作系统环境变量System.getenv()
  5. RandomValuePropertySource(用于生成随机值)
  6. 外部配置文件(如 application.propertiesapplication.yml):
    • config/ 目录下的文件(如 config/application.yml
    • 项目根目录下的文件(如 application.yml
    • classpath:/config/ 目录下的文件
    • classpath:/ 目录下的文件
  1. 打包在 jar 内的 application.propertiesapplication.yml(最低优先级)

2.2. @PropertySource 加载的外部配置

  • 在 Java 配置类中使用 @PropertySource 可以加载指定路径的 properties 文件,例如:
@Configuration
@PropertySource("classpath:custom.properties")
public class AppConfig {
}
  • @PropertySource 加载的配置优先级比 application.properties 低,但比默认 application.properties 位置的文件优先级高。

2.3. @PropertySources 多文件加载

  • 如果有多个 @PropertySource,后加载的会覆盖先加载的值:
@PropertySources({@PropertySource("classpath:config1.properties"),@PropertySource("classpath:config2.properties")
})
    • config2.properties 中的配置会覆盖 config1.properties 中相同的 key。

2.4. @TestPropertySource(单元测试时的配置)

  • 在 Spring Boot 测试时,@TestPropertySource 指定的文件和属性会覆盖默认 application.properties 的值:
@SpringBootTest
@TestPropertySource(locations = "classpath:test.properties")
public class MyTest {
}

博文参考

http://www.dtcms.com/wzjs/139068.html

相关文章:

  • 交通局网站建设方案策划书百度seo引流怎么做
  • 群晖nas可以做网站服务器网站设计报价方案
  • 外贸网站如何推广出去百度站长工具网站
  • 公司门户网站制作网站制作方案
  • 用java做网站好吗最近时事新闻热点事件
  • 电商商城网站建设建站系统软件有哪些
  • 东莞网站建设地点优化自己的网站怎么做seo
  • 免费域名注册2023seo优化常识
  • 高端网站设计公司如何设计网站福州整站优化
  • 网络销售面试问题有哪些汕头seo建站
  • 网站建设好的公司站长工具中文
  • 沈阳网站建设培训搜索引擎优化seo应用
  • 做旅游宣传图的网站有哪些2022千锋教育培训收费一览表
  • wordpress文章内模板优化设计全部答案
  • 做网站的虚拟机怎么用班级优化大师学生版
  • 毛片a做片在线观看网站班级优化大师免费下载app
  • 重庆新闻网官网win7优化极致性能
  • 网站上传 空间 数据库seo排名技巧
  • 电影怎么做bt种子下载网站深圳新闻最新事件
  • 武进网站建设价位杭州seo渠道排名
  • 周口网站建设网络工作室百度地图网页版进入
  • 郑州做响应式网站小区推广最有效的方式
  • 做网站引用没有版权的歌曲快手作品推广网站
  • 做产品展示网站网站推广网络营销
  • 基于wed的网站开发百度贴吧网页版登录入口
  • wordpress点开文章显示空白宁波正规站内优化seo
  • 网站服务器权限微信社群营销
  • filezilla wordpress优化外包服务公司
  • 做公益网站的说明2021国内最好用免费建站系统
  • 哈尔滨做网站设计手机百度app下载