# Spring Boot配置
## 命令行参数
* 在命令行方式启动Spring Boot应用时,连续的两个减号`--`就是对配置文件`application.properties/yml`中的属性值进行赋值的标识。所以,`java -jar xxx.jar --server.port=8888`命令,等价于我们在`application.properties/yml`中添加属性`server.port=8888`
## 环境变量
~~~
server:
port: ${PORT}
~~~
* 赋值方式一:编译器IDEA启动配置中的`Enviornment variables`配置填入Name(PORT)和对应Value值
* 赋值方式二:启动命令行加上参数`--PORT=你要设置的值`
## 外部配置文件【部署推荐】
* 将`application-{profile}.properties/yml`放置打包后的jar包同目录下,会优先使用该外部配置文件
## 多环境配置
* 在Spring Boot中多环境配置文件名需要满足`application-{profile}.properties/yml`的格式,其中`{profile}`对应你的环境标识,如:
* `application-dev.properties/yml`:开发环境
* `application-test.properties/yml`:测试环境
* `application-prod.properties/yml`:生产环境
* 指定具体的配置文件会被加载,需要在`application.properties/yml`文件中通过`spring.profiles.active`属性来设置,其值对应配置文件中的`{profile}`值。如:`spring.profiles.active=test`就会加载`application-test.properties`配置文件内容,等同执行`java -jar xxx.jar --spring.profiles.active=test`
## 加载顺序
> Spring Boot为了能够更合理的重写各属性的值,提供了下面17种[配置管理方式](https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/html/spring-boot-features.html#boot-features-external-config)(数字越小优先级越高):
1. 当`$HOME/.config/spring-boot`目录下的devtools是启用状态时,会使用[Devtools全局设置配置](https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/html/using-spring-boot.html#using-boot-devtools-globalsettings)
2. 单元测试中的[`@TestPropertySource`](https://docs.spring.io/spring/docs/5.2.6.RELEASE/javadoc-api/org/springframework/test/context/TestPropertySource.html)的注解
3. 单元测试中的`properties`属性. 测试注解[`@SpringBootTest`](https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/api/org/springframework/boot/test/context/SpringBootTest.html)以及[应用启用的其他测试注解](https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/html/spring-boot-features.html#boot-features-testing-spring-boot-applications-testing-autoconfigured-tests).
4. 命令行中传入的参数
5. `SPRING_APPLICATION_JSON`中的属性。`SPRING_APPLICATION_JSON`是以JSON格式配置在系统环境变量中的内容
6. `ServletConfig`初始化的参数
7. `ServletContext`初始化的参数
8. `java:comp/env`中的`JNDI`属性
9. Java的系统属性 (`System.getProperties()`)
10. 操作系统的环境变量
11. 通过`random.*`配置的随机属性
12. 位于当前应用jar包之**外**,指定了不同`{profile}`环境的`application-{profile}.properties/yml`配置文件
13. 位于当前应用jar包之**内**,指定了不同`{profile}`环境的`application-{profile}.properties/yml`配置文件
14. 位于当前应用jar包之**外**的`application-{profile}.properties/yml`配置文件
15. 位于当前应用jar包之**内**的`application-{profile}.properties/yml`配置文件
16. 在`@Configuration`注解修改的类中,通过`@PropertySource`注解定义的属性
17. 应用默认属性,使用`SpringApplication.setDefaultProperties`定义的内容
- 前言版本&说明
- 概念
- Tceon-PERFOOT 是什么?
- 系统架构
- 主要使用的开源组件
- 角色控制访问权限(RBAC)
- 用户手册
- 系统配置
- 工作流使用配置
- 定时任务调度
- 项目本地运行
- 后端运行
- 前端运行
- 项目结构说明
- 附:使用Oracle等数据库
- 模块化版本
- 后端开发指南
- 基本开发指南
- 前后端数据交互标准
- 工具类及数据权限
- 代码生成器
- 增删改查CRUD
- 日志类型注解扩展
- 逻辑删除
- 各验证码使用及配置
- 前端开发指南
- 基本开发指南
- 主题/Logo/首页等配置
- 路由菜单配置
- 多语言国际化配置
- 自定义图标icon
- 工具类及数据获取
- 完整版开发指南
- 前端Vue代码生成器
- Activiti工作流
- 单点登录配置
- MinIO对象存储服务搭建
- 第三方社交账号配置
- 短信开发/站内消息/邮件
- Vaptcha验证码
- 禁用词使用
- Monaco代码编辑器
- 开放平台及单点登录
- 开放平台使用指南
- Web接入开发流程
- 单点登录开发指南
- 微信小程序端开发指南
- 项目导入与开发必读
- 通用方法工具类说明
- Uniapp端开发指南
- APP后端开发指南
- Uniapp前端开发指南
- 开发新功能示例
- 后端开发新模块
- 前端开发新页面
- 测试
- SonarQube代码质量管理
- TestNG单元测试
- ExtentReports测试报告
- Selenuim自动化Web测试
- Appuim自动化App测试
- JMeter压测性能测试
- 部署
- Spring Boot配置
- 快速部署
- 后端部署
- 前端部署
- 前端部署优化
- Docker容器化部署
- 服务器配置
- DevOps环境搭建
- 组件安装列表
- 开发设计规范
- 分支管理
- 数据库设计规范
- Redis使用规范
- Java基础开发规范
- Rest API规范
- 项目结构规范
- 前端开发规范
- 前端设计规范
- 项目搭建分享
- 后端相关
- SpringBoot 2.x区别总结
- Spring Security整合JWT
- Spring Security动态权限管理
- Spring Boot 2.x整合Quartz
- Spring Boot 2.x整合Websocket
- Spring Boot 2.x整合Activiti工作流以及模型设计器
- Spring Boot + Security全局跨域配置
- 前端相关
- axios请求封装 统一异常处理
- 动态路由菜单加载
- 多维度控制权限至按钮显示
- 发送消息图标红点实时显示
- 动态组件单页操作
- 常见问题