idea使用.env运行SpringBoot项目

 更新时间:2026年02月10日 08:22:49   作者:Aric_Jones  
在SpringBoot项目中,通过.env文件管理敏感配置和环境参数比硬编码在application.yml中更安全规范,本文就来介绍一下如何使用,感兴趣的可以了解一下

在基于 Spring Boot 开发的项目中,我们会接触到数据库、Redis、OSS、第三方登录等大量敏感配置和环境相关参数。直接将这些参数硬编码在application.yml中存在诸多问题,而通过.env文件管理环境变量,能让项目开发、协作、部署更规范、更安全。

修改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 对话
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:你是一个博客智能助手,帮助用户解答技术问题。请用简洁、专业的中文回答,支持 Markdown 格式。如果问题与编程、技术无关,也可以友好地回答。}

# B站图片上传
bili-url: https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs

这样就会把敏感信息隔离了。

把敏感信息写入另一个文件

在更目录创建一个.env,具体的格式如下,初始化你的变量

# ============================================================
#  本地开发环境变量模板
#  复制为 .env 并填入真实值:cp .env.example .env
#  spring-dotenv 会自动加载 .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

项目运行的时候使用这个文件即可。

项目启动使用.env

1. 打开Edit Configurations..

2. 打开Modify options

3. 勾选

4. 选择文件

这样就可以直接使用.env上传文件,yml安心上传到仓库

到此这篇关于idea使用.env运行SpringBoot项目的文章就介绍到这了,更多相关使用.env运行SpringBoot项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring security中的授权

    Spring security中的授权

    本篇为大家带来Spring security的授权,首先要理解一些概念,有关于:权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器,这篇文章主要介绍了Spring security中的授权,需要的朋友可以参考下
    2024-01-01
  • IDEA断点调试,断点不起作用的解决

    IDEA断点调试,断点不起作用的解决

    这篇文章主要介绍了IDEA断点调试,断点不起作用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring Aop基本流程原理示例详解

    Spring Aop基本流程原理示例详解

    这篇文章主要给大家介绍了关于Spring Aop基本流程原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java文件、文件夹权限修改的两种方法

    Java文件、文件夹权限修改的两种方法

    这篇文章主要给大家介绍了关于Java文件、文件夹权限修改的两种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • IDEA如何自动生成serialVersionUID的设置

    IDEA如何自动生成serialVersionUID的设置

    这篇文章主要介绍了IDEA如何自动生成 serialVersionUID 的设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot整合neo4j使用详解

    SpringBoot整合neo4j使用详解

    这篇文章将和大家详细聊聊如何在springboot应用中集成和使用neo4j,文中有详细的实现流程和实例代码,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Java通过SSH连接路由器输入命令并读取响应的操作方法

    Java通过SSH连接路由器输入命令并读取响应的操作方法

    最近需要读取和修改华为路由器的配置,使用Java语言开发,通过SSH连接,输入命令并读取响应,接下来通过本文给大家介绍下Java通过SSH连接路由器,输入命令并读取响应,需要的朋友可以参考下
    2024-01-01
  • Java毕业设计实战之健身俱乐部管理系统的实现

    Java毕业设计实战之健身俱乐部管理系统的实现

    这是一个使用了java+SSM+Mysql+Jsp开发的健身俱乐部管理系统,是一个毕业设计的实战练习,具有俱乐部管理该有的所有功能,感兴趣的朋友快来看看吧
    2022-02-02
  • 如何用java编写一个rmi

    如何用java编写一个rmi

    RMI能让一个Java程序去调用网络中另一台计算机的Java对象的方法,那么调用的效果就像是在本机上调用一样。下面我们来详细了解一下吧
    2019-06-06
  • SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    这篇文章主要介绍了SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论