跳至主要內容

application.yaml

chanchaw大约 2 分钟java

概述

IDEA 中运行项目可以在 run/debug configuration 中设置属性 active profiles = local 设置启动项目时使用的配置文件,不需要修改根配置文件 application.yml 中的 spring.profiles.active

案例

变量

关于 application.yaml 对于多环境的配置有两种用法,都是通过指定使用配置文件的名称来适应不同的开发环境,一种是在 application.yaml 中单纯的指定使用的配置文件,所有配置都在子配置文件中。一种是在 application.yaml 中指定大部分相同的配置,在每个子配置文件中设置变量的不同值来适应不同的开发环境,下面是第二种用法的案例

server:
  port: 8080
spring:
  application:
    name: hm-service
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://${hm.db.host}:3306/hmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: ${hm.db.pw}
mybatis-plus:
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
  global-config:
    db-config:
      update-strategy: not_null
      id-type: auto
logging:
  level:
    com.hmall: debug
  pattern:
    dateformat: HH:mm:ss:SSS
  file:
    path: "logs/${spring.application.name}"
knife4j:
  enable: true
  openapi:
    title: 黑马商城接口文档
    description: "黑马商城接口文档"
    email: zhanghuyi@itcast.cn
    concat: 虎哥
    url: https://www.itcast.cn
    version: v1.0.0
    group:
      default:
        group-name: default
        api-rule: package
        api-rule-resources:
          - com.hmall.controller
hm:
  jwt:
    location: classpath:hmall.jks
    alias: hmall
    password: hmall123
    tokenTTL: 30m
  auth:
    excludePaths:
      - /search/**
      - /users/login
      - /items/**
      - /hi
# keytool -genkeypair -alias hmall -keyalg RSA -keypass hmall123 -keystore hmall.jks -storepass hmall123

环境 dev 的配置如下

hm:
  db:
    host: mysql
    pw: 123

环境 local 的配置如下

hm:
  db:
    host: 192.168.150.101 # 修改为你自己的虚拟机IP地址
    pw: 123 # 修改为docker中的MySQL密码

如上面所示,根配置文件通过 ${hm.db.host} 的语法使用变量,使用具体环境中的变量。

部署时的用法

应用程序参数位置

运行 java 进程的命令参数正确顺序是 java [JVM参数] -jar [jar包] [应用参数],所以使用外部配置文件的参数应该写在 jar包 的后面,例如

/usr/local/java/bin/java -Xms256m -Xmx256m -DSERVICE_LOG_FOLDER=/projs/visitor/logs -jar /projs/visitor/backend/visitor.jar --spring.config.location=/projs/visitor/backend/application.yml -Dfile.encoding=UTF-8 -Dloader.verbose=true

# 上面的直接指定外置配置文件的写法也可以类似下面的 --spring.profiles.active=prod,common 激活多个配置文件,例如
java -jar order-service.jar --spring.config.location=/projs/visitor/backend/application.yml,/projs/visitor/backend/application-comm.yml

或者是下面的写法

java -jar order-service.jar --spring.profiles.active=prod
# 同时激活多个配置文件
java -jar order-service.jar --spring.profiles.active=prod,common
# 后面的配置会覆盖前面的配置,如上面的命令,配置文件 application-comm.yml 中的会覆盖 application-prod.yml 中的同名配置项