开发环境
-
开发环境(Development environment 简称 dev):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。
-
测试环境(test):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。
-
灰度环境(pre):灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。 <很多企业将test环境作为Pre环境 >
-
生产环境(Production environment 简称 prod):是值正式提供对外服务的,一般会关掉错误报告,打开错误日志。
三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。
为什么需要分环境
(参考:https://www.cnblogs.com/05-hust/p/12097417.html)
springboot项目中的配置文件
因为本地测试的数据库和部署在服务器上的数据库不一样,所以我把本地测试的数据库配置和服务器的数据库配置分别写在application-dev.yml和application-prod.yml
这样子做之后,以后把项目打包到服务器之前,就不需要再修改数据库的配置,只需在application.yml文件中要修改spring.profile.active配置即可
切换方法:
一般在设置application.properties中spring.profiles.active=dev
时,则此时启动连接的是dev环境。
且如果有重复的则配置一切以application.properties为主,application.properties会覆盖掉application-dev.properties或者application-pro.properties中与application.properties属性一致的配置
配置文件中的占位符使用
在application.yml/properties配置文件内可以直接使用占位符来进行配置的相互引用
#引用 :halo
system.name: ${spring.application.name}
spring.application.name: halo
这样我们在系统中通过@Value(“${name}”)或者通过@ConfigurationProperties方式使用时,得到的值都为halo
// @Value方式
@Value("${system.name}")
private String name;
// @ConfigurationProperties方式
@Configuration
@ConfigurationProperties(prefix = "system")
static class LoadConfig {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这样方式极大地减少了相同的配置出现,让我们在配置文件中也可以实现类似于常量的定义
学习例子来自知乎大佬