java多数据库开发evn,SpringBoot入门教程(三)通过properties实现多个数据库环境自动切换配置...

springboot技术内幕架构设计与实现

53.1元

包邮

(需用券)

去购买 >

940fafc1c5689762200b13267e0e004b.png

前面的文章已经介绍了CentOS部署SpringBoot项目从0到1的详细过程,包括Linux安装ftp、Tomcat以及Java jdk的全部过程。这篇文章主要介绍关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时Maven控制方式。

关于springboot基础矿建搭建有疑问的。可以看我之前的一篇文章。详解intellij idea搭建SpringBoot

v环境介绍

正常来讲,一个软件的开发上线的流程大部分都是分为三个环境,依次是开发、测试、上线。

开发环境(dev):

开发环境是指的是咱们本地跑的环境。

测试环境(qa):

一般是克隆一份生产环境的配置,qa即test。

生产环境(prod)

正式提供对外服务的,即是真实环境。

关于三个环境的切换已然标准化了,这里只是一笔带过一下,因为下文中的配置文件会跟三个环境有关联。相信所有人都不会对这三个环境陌生的。

今天主要讲讲关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时Maven控制方式。首先介绍部署时切换的方式。

v部署时切换

1.1 配置dev和qa环境数据,以备测试。

1570008689406467.png

1.2 新增properties文件

1570008689707845.png

如上图:在application.properties文件的同级目录依次创建application-dev.properties,application-qa.properties,application-pro.properties这三个配置文件,dev、qa和prod分别对应上文"环境介绍"中的三个环境。

1.3 配置各个properties文件

在application.properties中添加配置切换选项,例如切换到dev环境的配置为:spring.profiles.active=dev

依次在application-dev.properties,application-qa.properties,application-pro.properties配置相关datasource连接信息。

例如application-dev.properties配置:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest

spring.datasource.username=root

spring.datasource.password=***********

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

1570008689345178.png

1.4 本地环境

当设置application.properties中spring.profiles.active=dev时,则此时启动连接的是dev环境。

1570008689134369.png

如上图,此时运行得到的结果与配置文件一致,是dev环境的数据。

1.5 部署测试环境

部署测试环境,关于部署有不了解的可以看看《CentOS部署SpringBoot项目从0到1》,部署时切换到qa环境。

java -jar zuche-0.0.1-SNAPSHOT.jar --spring.profiles.active=qa --server.port=2008

1570008689614057.png

可以看到日志中显示的内容与预期一致,spring.profiles.active设置为qa, 端口设置为2008。

运行效果如下图,部署以后连接的qa环境。

1570008689272501.png

vMaven控制打包时切换

2.1 设置项目对象模型pom.xml

2.1.1 添加profiles到pom.xml中,profiles节点是和build同级的。

dev

dev

true

qa

qa

prod

prod

activation表示的是可以用这样的命令来触发profile,true表示dev是默认的profile, 这样本地直接ide启动项目的时候就是连接的dev环境。

2.1.2 添加filters节点。

src/main/resources/application-${env}.properties

1570008689297404.png

2.2 更新application.properties。

spring.profiles.active=@env@

注意@env@中的env可以理解为一个变量,需要与2.1.2中设置的${env}对应上。

2.3 添加Maven打包命令

clean package -P qa -D maven.test.skip=true

1570008689576734.png

-D maven.test.skip=true不执行测试用例,也不编译测试用例类。

2.4 执行Maven命令

1570008689824155.png

查看jar包的application.properties文件的spring.profiles.active,看Maven命令是否生效。

1570008689105459.png

如上图,spring.profiles.active=qa

2.5 部署Tomcat

java -jar zuche-0.0.1-SNAPSHOT.jar --server.port=2008

1570008689197891.png

Maven打包时已经设置了qa环境,部署命令中不需要再指明qa环境。

v博客总结

本文通篇讲的主要是围绕springboot部署jar包的两种方式,至于war包,以后有时间再说说。

v源码地址

https://github.com/toutouge/javademosecond/tree/master/hellospringboot

作  者:请叫我头头哥

出  处:http://www.cnblogs.com/toutou/

关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

原文链接:https://www.cnblogs.com/toutou/p/9761969.html

java 11官方入门(第8版)教材

79.84元

包邮

(需用券)

去购买 >

f0f3f55624fb396b1764d42d6df88864.png

<think>好的,我现在需要帮助用户了解数据库相关的.env文件的作用和含义。首先,我要回忆一下.env文件的基本知识,然后结合数据库配置来具体说明。 根据用户提供的引用内容,比如引用[2]和[3],.env文件用于存储环境变量,比如数据库的用户名、密码、连接字符串等。这些信息不应该随代码变更,所以不放入版本控制。接下来,我需要解释在数据库配置中,这些变量具体如何应用。 用户可能想知道为什么用.env文件而不是直接在代码里写配置。根据引用[3],环境变量应该与环境绑定,比如开发、测试、生产环境有不同的数据库连接。这样在不同环境切换时,只需修改.env文件,而不需要改动代码,提高灵活性和安全性。 另外,引用[4]提到.env.local用于本地开发,覆盖其他.env文件的设置,这适用于团队成员各自配置自己的数据库连接,而不会影响他人。比如每个开发者可能有本地的数据库实例,使用不同的端口或密码,这时候.env.local就很有用。 需要说明的是,数据库相关的环境变量通常包括DATABASE_URL,包含协议、用户名、密码、主机、端口和数据库名,如引用[3]中的示例:mysql://username:password@hostname:port/dbname。还可能包括其他变量如DB_HOST、DB_PORT等,具体取决于项目配置。 同时,我需要强调安全性,因为.env文件中的敏感信息如密码不应提交到版本库,避免泄露。这也是为什么在.gitignore中添加.env文件的原因,如引用[2]所述。 最后,可能需要给出一个示例,展示如何在代码中访问这些环境变量,比如在JavaScript中使用import.meta.env,如引用[1]提到的。不过具体语法可能因框架而异,比如Vue或React有不同的方式,但核心思想一致。 总结一下,回答的结构应该是先解释.env文件的作用,再具体到数据库配置中的变量,然后说明不同环境下的配置文件(如.env.development、.env.production),以及本地开发.env.local,最后强调安全性和使用方法。这样用户能全面理解数据库相关的.env配置。</think>### 数据库相关`.env`文件的作用与含义 `.env`文件是用于配置**环境变量**的文本文件,在数据库配置中,它主要用于定义与数据库连接相关的敏感信息或环境相关参数,例如数据库地址、用户名、密码等。这些变量会因环境开发、测试、生产)不同而变化,通过`.env`文件可以灵活管理配置,避免将敏感信息硬编码到代码中。 --- #### 1. **核心作用** - **隔离敏感信息**:例如数据库密码、API密钥等不应暴露在代码中,而是通过环境变量动态注入[^2][^3]。 - **多环境适配**:通过不同的`.env`文件(如`.env.development`、`.env.production`)为开发、生产环境配置不同的数据库连接参数[^1][^4]。 - **团队协作安全**:本地开发时使用`.env.local`覆盖共享配置,避免提交个人配置到代码仓库[^4]。 --- #### 2. **数据库相关环境变量示例** 在`.env`文件中,数据库配置通常包含以下内容: ```env # 数据库连接字符串(格式:协议://用户名:密码@主机:端口/数据库名) DATABASE_URL=mysql://root:mypassword@localhost:3306/mydb # 或拆分多个独立变量 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=mypassword DB_NAME=mydb ``` --- #### 3. **不同环境下的优先级** - **通用规则**: - `.env.local` > `.env.development` > `.env`(开发环境) - `.env.production`(生产环境)[^4] - **典型场景**: - 开发环境使用本地数据库,生产环境使用云数据库。 - 示例: `.env.development`: ```env DATABASE_URL=mysql://dev_user:dev_pass@localhost:3306/dev_db ``` `.env.production`: ```env DATABASE_URL=mysql://prod_user:prod_pass@db.prod.com:3306/prod_db ``` --- #### 4. **代码中如何访问环境变量** 以JavaScript项目为例(如Vue/React): ```javascript // 通过import.meta.env读取(需框架支持,如Vite) const dbConfig = { host: import.meta.env.DB_HOST, password: import.meta.env.DB_PASSWORD }; ``` --- #### 5. **安全注意事项** - **禁止提交到版本控制**:将`.env`、`.env.local`添加到`.gitignore`,防止敏感信息泄露。 - **生产环境隔离**:生产环境变量应通过服务器管理(如Docker Secrets、云平台配置),而非直接使用文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值