idea使用.env運(yùn)行SpringBoot項(xiàng)目
在基于 Spring Boot 開發(fā)的項(xiàng)目中,我們會(huì)接觸到數(shù)據(jù)庫、Redis、OSS、第三方登錄等大量敏感配置和環(huán)境相關(guān)參數(shù)。直接將這些參數(shù)硬編碼在application.yml中存在諸多問題,而通過.env文件管理環(huán)境變量,能讓項(xiàng)目開發(fā)、協(xié)作、部署更規(guī)范、更安全。
修改yml文件
把敏感信息使用占位符代替,例如下面
server:
port: ${SERVER_PORT:8080}
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
application:
name: BlogApplication
# MySQL
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DB:blog}?serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: ${MYSQL_USER:root}
password: ${MYSQL_PASSWORD:}
druid:
initial-size: 10
min-idle: 10
max-active: 150
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 600000
max-evictable-idle-time-millis: 900000
validation-query: SELECT 1 FROM DUAL
validation-query-timeout: 500
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 文件上傳限制
servlet:
multipart:
max-request-size: 100MB
max-file-size: 100MB
# Redis
redis:
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:}
timeout: 10s
lettuce:
pool:
max-active: 150
max-wait: 5000ms
max-idle: 100
min-idle: 50
# 郵箱
mail:
host: ${MAIL_HOST:smtp.qq.com}
username: ${MAIL_USERNAME:}
password: ${MAIL_PASSWORD:}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
ssl:
enable: true
# rabbitmq:
# host: ${RABBITMQ_HOST:localhost}
# port: ${RABBITMQ_PORT:5672}
# username: ${RABBITMQ_USER:guest}
# password: ${RABBITMQ_PASSWORD:guest}
# 博客鏈接
blog:
url: ${BLOG_URL:http://localhost:1314/}
# 線程池
thread:
pool:
core-pool-size: 5
max-pool-size: 10
queue-capacity: 50
keep-alive-seconds: 60
# 搜索模式 elasticsearch、mysql
search:
mode: ${SEARCH_MODE:mysql}
# 文件上傳策略 local、oss、cos
upload:
strategy: ${UPLOAD_STRATEGY:oss}
local:
url: ${UPLOAD_LOCAL_URL:https://static.ttkwsd.top/}
path: ${UPLOAD_LOCAL_PATH:/usr/local/upload/}
oss:
url: ${OSS_URL:}
endpoint: ${OSS_ENDPOINT:}
bucketName: ${OSS_BUCKET:}
accessKeyId: ${OSS_ACCESS_KEY_ID:}
accesskeySecret: ${OSS_ACCESS_KEY_SECRET:}
# MyBatis-Plus
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.ican.entity
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
global-config:
db-config:
table-prefix: t_
# Elasticsearch
elasticsearch:
enabled: ${ES_ENABLED:false}
username: ${ES_USERNAME:elastic}
password: ${ES_PASSWORD:}
hostname: ${ES_HOST:localhost}
port: ${ES_PORT:9200}
connectTimeout: 3000
socketTimeout: 30000
connectionRequestTimeout: 1000
# Sa-Token
sa-token:
token-name: Authorization
token-prefix: Bearer
timeout: -1
active-timeout: -1
auto-renew: false
is-concurrent: true
token-style: uuid
is-share: false
max-login-count: 20
is-read-cookie: false
is-read-body: false
is-read-header: true
is-log: false
# 第三方登錄
oauth:
gitee:
client-id: ${OAUTH_GITEE_CLIENT_ID:}
client-secret: ${OAUTH_GITEE_CLIENT_SECRET:}
grant_type: authorization_code
redirect-uri: ${OAUTH_GITEE_REDIRECT:https://your-domain.com/oauth/login/gitee}
access-token-url: https://gitee.com/oauth/token
user-info-url: https://gitee.com/api/v5/user?access_token={access_token}
github:
client-id: ${OAUTH_GITHUB_CLIENT_ID:}
client-secret: ${OAUTH_GITHUB_CLIENT_SECRET:}
redirect-url: ${OAUTH_GITHUB_REDIRECT:https://your-domain.com/oauth/login/github}
access-token-url: https://github.com/login/oauth/access_token
user-info-url: https://api.github.com/user
qq:
app-id: ${OAUTH_QQ_APP_ID:}
app-key: ${OAUTH_QQ_APP_KEY:}
grant_type: authorization_code
redirect-url: ${OAUTH_QQ_REDIRECT:https://your-domain.com/oauth/login/qq}
access-token-url: https://graph.qq.com/oauth2.0/token
user-openid-url: https://graph.qq.com/oauth2.0/me
user-info-url: https://graph.qq.com/user/get_user_info
# AI 對(duì)話
ai:
deepseek:
api-key: ${AI_API_KEY:}
api-url: ${AI_API_URL:https://api.deepseek.com/chat/completions}
model: ${AI_MODEL:deepseek-chat}
system-prompt: ${AI_SYSTEM_PROMPT:你是一個(gè)博客智能助手,幫助用戶解答技術(shù)問題。請(qǐng)用簡潔、專業(yè)的中文回答,支持 Markdown 格式。如果問題與編程、技術(shù)無關(guān),也可以友好地回答。}
# B站圖片上傳
bili-url: https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs
這樣就會(huì)把敏感信息隔離了。
把敏感信息寫入另一個(gè)文件
在更目錄創(chuàng)建一個(gè).env,具體的格式如下,初始化你的變量
# ============================================================ # 本地開發(fā)環(huán)境變量模板 # 復(fù)制為 .env 并填入真實(shí)值:cp .env.example .env # spring-dotenv 會(huì)自動(dòng)加載 .env 文件 # ============================================================ # -------- MySQL -------- MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_DB=blog MYSQL_USER=root MYSQL_PASSWORD=your_password # -------- Redis -------- REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # -------- 郵箱 -------- MAIL_HOST=smtp.qq.com MAIL_USERNAME=your_email@qq.com MAIL_PASSWORD=your_smtp_auth_code # -------- 博客地址 -------- BLOG_URL=http://localhost:1314/ # -------- 搜索模式 (mysql / elasticsearch) -------- SEARCH_MODE=mysql # -------- 文件上傳 (local / oss / cos) -------- UPLOAD_STRATEGY=oss OSS_URL=https://your-bucket.oss-cn-beijing.aliyuncs.com/ OSS_ENDPOINT=oss-cn-beijing.aliyuncs.com OSS_BUCKET=your-bucket OSS_ACCESS_KEY_ID=your_key OSS_ACCESS_KEY_SECRET=your_secret # -------- Elasticsearch -------- ES_ENABLED=false # -------- 第三方登錄(可選)-------- OAUTH_GITEE_CLIENT_ID= OAUTH_GITEE_CLIENT_SECRET= OAUTH_GITHUB_CLIENT_ID= OAUTH_GITHUB_CLIENT_SECRET= OAUTH_QQ_APP_ID= OAUTH_QQ_APP_KEY= # -------- AI(可選)-------- AI_API_KEY= AI_API_URL=https://api.deepseek.com/chat/completions AI_MODEL=deepseek-chat
項(xiàng)目運(yùn)行的時(shí)候使用這個(gè)文件即可。
項(xiàng)目啟動(dòng)使用.env
1. 打開Edit Configurations..

2. 打開Modify options

3. 勾選

4. 選擇文件

這樣就可以直接使用.env上傳文件,yml安心上傳到倉庫
到此這篇關(guān)于idea使用.env運(yùn)行SpringBoot項(xiàng)目的文章就介紹到這了,更多相關(guān)使用.env運(yùn)行SpringBoot項(xiàng)目內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 解決IDEA使用springBoot創(chuàng)建項(xiàng)目,lombok標(biāo)注實(shí)體類后編譯無報(bào)錯(cuò),但是運(yùn)行時(shí)報(bào)錯(cuò)問題
- IDEA運(yùn)行SpringBoot項(xiàng)目的圖文教程
- idea創(chuàng)建springboot項(xiàng)目,Application.java不能運(yùn)行問題及解決
- IDEA運(yùn)行SpringBoot項(xiàng)目的詳細(xì)步驟(圖文教程)
- IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖
- IntelliJ?IDEA運(yùn)行SpringBoot項(xiàng)目的詳細(xì)步驟
相關(guān)文章
Java實(shí)現(xiàn)五子棋(附詳細(xì)源碼)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問題
這篇文章主要介紹了解決springcloud啟動(dòng)時(shí)報(bào)錯(cuò)Connection refused:connect問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Spring cloud 查詢返回廣告創(chuàng)意實(shí)例代碼
在本篇文章里小編給大家整理的是關(guān)于Spring cloud 查詢返回廣告創(chuàng)意實(shí)例代碼,需要的朋友們可以跟著學(xué)習(xí)下。2019-08-08
SpringBoot實(shí)現(xiàn)類似鉤子函數(shù)的方法
這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)類似鉤子函數(shù)的方法,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-04-04
教你如何測(cè)試Spring Data JPA的Repository
Spring Data JPA 提供了一些便捷的方式來測(cè)試這種持久層的代碼,常見的兩種測(cè)試類型是集成測(cè)試和單元測(cè)試,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
Java使用Netty實(shí)現(xiàn)同時(shí)多端口監(jiān)聽
本文主要內(nèi)容為SpringBoot項(xiàng)目使用Netty監(jiān)聽多個(gè)端口接受客戶端數(shù)據(jù)_netty監(jiān)聽多個(gè)端口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-10-10
淺談mybatisPlus的Ipage分頁和map參數(shù)的問題
這篇文章主要介紹了mybatisPlus的Ipage分頁和map參數(shù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java TimeoutException:服務(wù)調(diào)用超時(shí)異常的正確解決方案
在現(xiàn)代軟件開發(fā)中,服務(wù)間通信是構(gòu)建分布式系統(tǒng)的基礎(chǔ),然而,網(wǎng)絡(luò)延遲、服務(wù)負(fù)載、資源競(jìng)爭等因素都可能導(dǎo)致服務(wù)調(diào)用超時(shí),TimeoutException是Java中表示服務(wù)調(diào)用超時(shí)的常見異常之一,本文將探討TimeoutException的成因及解決方案,需要的朋友可以參考下2024-12-12
java學(xué)習(xí)DongTai被動(dòng)型IAST工具部署過程
被動(dòng)型IAST被認(rèn)為是DevSecOps測(cè)試階段實(shí)現(xiàn)自動(dòng)化安全測(cè)試的最佳工具,而就在前幾天,洞態(tài)IAST正式開源了,這對(duì)于甲方構(gòu)建安全工具鏈來說,絕對(duì)是一個(gè)大利好2021-10-10

