SpringBoot学习笔记-2:第二章 Spring Boot 配置(3)

简介: SpringBoot学习笔记-2:第二章 Spring Boot 配置

6、配置文件占位符

RandomValuePropertySource 配置文件中可以使用随机数

${random.value}
${random.int}
${random.uuid}
${random.long}
${random.int(10)}
${random.int[1024,65536]}

属性配置占位符

app.name=MyApp
app.description=${app.name:默认值}

7、Profile 多环境支持


Profile 对不同环境提供不同配置功能的支持


1、多 Profile 文件


application-{profile}.properties


默认使用

application.properties

通过 spring.profiles.active=prod 指定配置文件


eg:

application.properties


server.port=8080

spring.profiles.active=prod


application-dev.properties


server.port=8081


application-prod.properties


server.port=8082


2、yaml 文档块模式


application.yml

server:
  port: 8080
spring:
  profiles:
    active: dev
---
server:
  port: 8081
spring:
  profiles: dev
---
server:
  port: 8082
spring:
  profiles: prod

3、激活方式

1、命令行
--spring.profiles.active=dev
2、配置文件
spring.profiles.active=dev
3、jvm参数
-Dspring.profiles.active=dev


8、配置文件的加载位置

Spring Boot 会自动扫描一下位置的

application.properties 或者 application.yml 文件作为配置文件

优先级从高到低,所有文件都被加载,

互补配置:高优先级覆盖低优先级

./config/
./
classpath:/config/
classpath:/

spring.config.location 修改默认位置

9、外部配置加载顺序

优先级从高到低如下

1. 命令行参数
$ java -jar springboot-helloword-1.0-SNAPSHOT.jar --server.port=8005
2. java:comp/env的JNDI属性
3. java系统属性System.getProperties()
4. 操作系统环境变量
5. RandomValuePropertySource配置的random.*属性
6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7. jar包内部的application-{profile}.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.setDefualtProperties指定的默认属性

总结:

  1. 高优先级配置会覆盖低优先级配置
  2. 所有配置会形成互补配置

10、自动配置原理

扫描配置文件内容包装成 properties 对象

将配置内容加载到容器中

  1. AutoConfiguration 自动配置类
  2. Properties 封装属性
  3. @Condition 判断条件成立,决定配置类是否生效

11、@Conditional&自动配置报告

@ConditionalOnJava
@ConditionalOnMissingBean
@ConditionalOnClass
...

自动配置类必须在一定的条件下才生效


开启调试模式


debug=true


打印自动配置报告


=========================

AUTO-CONFIGURATION REPORT

=========================

Positive matches: 启动的自动配置类

Negative matches: 没启用启动的自动配置类

Exclusions:

Unconditional classes:

相关文章
|
2月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
2月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
2月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
342 3
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
446 2
|
3月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
2876 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
631 5
存储 JSON Java
540 0
|
3月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
3月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
1411 0
|
3月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
207 0
探索Spring Boot的@Conditional注解的上下文配置