目录
一步到位springboot目录
gitee:https://gitee.com/chaitou/leilema.git
前言
谈到springboot,我们反复提到了"约定大于配置"。简单的说,当你引入stater-web
,也就是说当你需要使用web模块的时候,springboot
就默认觉得你要用到tomcat
、spring mvc
等,同时他也默认觉得你要用的端口就是8080,因此帮你在配置文件上默认写了8080
在SpringBoot中,约定大于配置可以从以下两个方面来理解:
① 开发人员仅需规定应用中不符合约定的部分
② 在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想
程序员:“我不要你觉得,我要我觉得”
springboot:“你要你觉得,就得去/src/main/java/resources/application.properties
中配。比如要指定端口为8081,你不配我怎么知道?🔑一把3块你配吗?”
配置文件
文件类型
项目src/main/java/resources
下存放着application.properties
文件,这就是配置文件。springboot支持2中配置文件。一种是.properties
、另一种则是.yml
,两者有什么区别呢?
.properties
文件需要写全称,也就是
server.port=8081
server.servlet.context-path=/leilema
.yml
文件则通过缩进的方式省略了全称。(特别注意,:
后面有一个空格,千万千万不能省略)
server:
port: 8081
servlet:
context-path: /leilema
这2种格式笔者更喜欢第二种,看起来不回眼花缭乱的。怎么使用yml
文件呢?直接把目录下application.properties
重命名成application.yml
就可以了
一、自定义属性
在配置文件src/main/java/resources/application.yml
上配置自定义属性
hello:
name: bugpool
project: leilema
重写一下HelloWorldController
@RestController
public class HelloWorldController {
@Value("${hello.name}")
private String name;
@Value("${hello.project}")
private String project;
@GetMapping("/hello")
public String helloWorld() {
return "hello " + project + " ceo " + name;
}
}
运行一哈
二、实战多环境配置文件
跟学生项目不同,实际生产中,一个项目往往会有3套配置,分别是:
application-pro.yml
:生产环境,会切换到生产数据库、同时关闭sql
打印swagger
文档等开发时用到的配置、同时提高日志等级,只输出重要日志application-test.yml
:测试环境,切换到测试数据库。一般测试数据库数据是从真实生产数据库某个时间点的同步数据(经过脱敏处理),最大限度的模拟真实环境,提供给测试人员
使用真实数据进行测试代码application-dev.yml
:开发环境,这个才是程序员开发时使用的配置。会打开sql
语句打印等配置方便调试开发、同时开发环境不会有生产环境的数据防止程序员删库跑路,也防止程序员看到一些不该看的东西(比如老板的工资…)。开发人员的application-pro.yml
一般是空的,代码提交后,经过测试人员
测试后由运维人员
通过阿波罗
或者其他持续集成工具
进行替换配置文件
说了这么多,如果在真实项目中,你不用多套配置文件,而是通通只有application.yml
,每次切换环境都手动去改配置文件。且不说有多麻烦,代码版本管理你也做不了啊,开发人员权限控制也做不了 ,而且最蛋疼的是难免会改错!一旦改错上生产那事情有多大条你就自己想把…
三、多环境配置文件的使用
springboot配置环境读取原理
Springboot启动前自动会读取src/main/resources/application.yml
配置文件,再通过application.yml
配置文件中配置的’spring.profiles.active’寻找启用的配置文件。
1. 创建配文件
新建2个配置文件分别为
application-dev.yml
用于开发,端口为8081application-pro.yml
用于生产,端口为8080
2. 编写配置文件
编写application-dev.yml
配置文件,端口为8081。同理编写application-pro.yml
为8080
server:
port: 8081
3. 激活配置文件
前面说了,springboot默认读取的是application.yml
,我们需要在application.yml
中指定当前生效的配置文件
spring:
profiles:
active: dev
虽然我们只配置了dev
,springboot会按照约定寻找application-*.yml
文件
4. 启动验证
当我们开启dev
环境时,可以看到8080端口是访问不到的,8081端口可以正常访问
4. 配置文件目录
如果要深挖,springboot的配置文件是可以反正5个目录的,按照优先级可分为(./
表示当前项目根目录):
- 启动命令时指定目录,也就是
java -jar xxx
强制指定的,用户指定的,最大嘛 - 当前项目同级目录下/config中,也就是
../config/application.yml
- 当前项目同级目录,也就是
../application.yml
- 项目内config包中,也就是
src/main/resources/config/application.yml
- 项目内,也就是
src/main/resources/application.yml
也就是说1
覆盖 2
,以此类推…
这里只是为了跟大家说清楚,不需要深究,百分之99的同学用不着。但是知道一下这个东西,等需要用时再查即可
总结
本篇主要介绍了springboot默认配置,之后介绍实战中的多环境配置文件,由于我们项目较小,因此我们只使用dev
和pro
,最后我们学习了如何创建多环境配置文件,并且启用指定环境。最最最最后延伸了配置文件的目录,这点了解即可,一般都用不着。下一篇我们将开始讲解orm
层框架,也就是操作数据库,程序员4大搬砖技能CRUD
!