application.yml的多环境配置方式(单文件、多文件)

一:多文件方式:

application.yml

#在application.yml中指定命名空间: 
spring:
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  profiles: 
    active: dev
  # 文件上传
  servlet:
     multipart:
       # 单个文件大小
       max-file-size:  10MB
       # 设置总上传的文件大小
       max-request-size:  20MB
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true
  jackson:
    default-property-inclusion: non_null

#配置其他参数信息:
server:
  # 服务器的HTTP端口,默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /plat
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # tomcat最大线程数,默认为200
    max-threads: 800
    # Tomcat启动初始化的线程数,默认值25
    min-spare-threads: 30

application-dev.yml

#该环境下复写的部分参数(覆盖application.yml的配置并生效):
server:
  # 服务器的HTTP端口,默认为8081
  port: 8081
  servlet:
    # 应用的访问路径
    context-path: /plattest

# 该环境下的其他配置
spring:
    # redis 配置
    redis:
        # 地址
        host: 127.0.0.1
        # 端口,默认为6379
        port: 6379
        # 数据库索引
        database: 0
        # 密码
        password:
        # 连接超时时间
        timeout: 10s
        lettuce:
            pool:
                # 连接池中的最小空闲连接
                min-idle: 0
                # 连接池中的最大空闲连接
                max-idle: 8
                # 连接池的最大数据库连接数
                max-active: 8
                # #连接池最大阻塞等待时间(使用负值表示没有限制)
                max-wait: -1ms

如需要继续添加不同环境下的文件如:application-test.yml; application-work.yml;…多文件没啥要说的,比比皆会。

二:单文件方式:

application.yml

#根据命名空间(环境)的不同启动不同的配置【分割符为---】
#即如果有指定profiles,则在遇到---时即为同一个命名空间(环境)】
#如果有默认的配置的话,也需要用---来分割,且不需要指定profiles(环境),会被所有的命名空间(环境)获取到配置
#默认配置可以不指定命名空间(环境),但是该部分的配置在其他profiles(环境)里面如果没有显式写出相对配置的值时,会使用默认配置提供的配置。
#多个环境配置时,可以每个都指定命名空间(环境),这样的话,就没有默认配置一说了,但是相应的需要的配置在每个命名空间(环境)中都需要加上,不然有些配置值会因命名空间(环境)不同时丢失而不起作用的。

##################【默认程序健康检查配置】#####################
management:
  endpoints:
    #为false是禁用所有端点;此时需要访问某个端点的话,需加上对应端点的配置如:endpoint.info.enable: true
    enabled-by-default: true
    web:
      exposure:
        #对应web接口中默认开放的是info和health;如果需要看到所有的,需要自己include添加对应的id。"*"为全部,多个用逗号分隔;
        include: 'health,info,metrics,scheduledtasks,logfile,loggers'
  #        exclude: 'shutdown,env,auditevents,httptrace,flyway,mappings,threaddump,heapdump' #排除端点,多个用逗号分隔;

  endpoint:
    health:
      show-details: always      #访问程序健康状态时,显示详细信息;
      enabled: true

---

##################【默认配置】#####################
server:
  port: 8115

spring:
  application:
    name: eureka-server
  profiles: local

eureka:
  server:
    #设置 eureka server同步失败的等待时间 默认 5分,在这期间,它不向客户端提供服务注册信息,此处默认1s
    wait-time-in-ms-when-sync-empty: 1000
    #设为false,关闭自我保护(客户端心跳检测15分钟内错误达到80%服务会保护)
    enable-self-preservation: false
    # 扫描失效服务的间隔时间(单位毫秒,默认是60*1000)即60秒
    eviction-interval-timer-in-ms: 50000
    #eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上默认30s
    response-cache-update-interval-ms: 3000
    #eureka server缓存readWriteCacheMap失效时间,这个只有在这个时间过去后缓存才会失效,失效前不会更新,过期后从registry重新读取注册服务信息,registry是一个ConcurrentHashMap。
    response-cache-auto-expiration-in-seconds: 180
  client:
    #不作为一个客户端注册到注册中心
    register-with-eureka: false
    #不作为一个客户端获取服务端的注册信息
    fetch-registry: false
    #从服务端获取注册信息的间隔时间默认30s
    registry-fetch-interval-seconds: 30
    service-url:
      defaultZone: http://127.0.0.1:8115/eureka
  instance:
    #使用ip地址进行注册,如果需要使用指定的ip地址的话使用eureka.instance.ip-address来指定
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
    # 续约更新时间间隔(默认30秒),客户端向服务端发送心跳的时间间隔,如果缩小感知时间的话,可以改小改值
    lease-renewal-interval-in-seconds: 30
    # 心跳淘汰时间(默认90秒),如果缩小感知时间的话,可以改小改值
    lease-expiration-duration-in-seconds: 90

---
server:
  port: 8111

spring:
  application:
    name: eureka-server
  profiles: slave1

eureka:
  server:
    #关闭服务器自我保护
    enable-self-preservation: true
    # 扫描失效服务的间隔时间(单位毫秒,默认是60*1000)即60秒,此处指定15秒
    eviction-interval-timer-in-ms: 15000
    #如果没有关闭自我保护可以调整该阈值,(客户端心跳检测15分钟内错误达到85%服务会开启自我保护机制)
    #renewal-percent-threshold: 0.85
  client:
    #作为客户端注册到注册中心
    register-with-eureka: true
    #作为客户端获取服务端的注册信息
    fetch-registry: true
    serviceUrl:
      defaultZone: http://127.0.0.1:8111/eureka,http://127.0.0.1:8112/eureka,http://127.0.0.1:8113/eureka
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
    lease-renewal-interval-in-seconds: 30
    lease-expiration-duration-in-seconds: 90
logging:
  level:
    root: INFO
    com.central: INFO
    org.springframework.web: INFO
    org.hibernate: INFO
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
    org.hibernate.type.descriptor.sql.BasicExtractor: TRACE

注意点:—符号在每个环境之前书写; 该方式配置文件,启动时添加命令如:-Dspring.profiles.active=test

扩展配置的使用(以上两种方式均可):

1.pom文件添加环境分类与相关插件:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.txt</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>$</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>
		</plugins>
</build>

<profiles>
    <profile>
        <id>druid</id>
        <properties>
            <spring.active>druid</spring.active>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <spring.active>test</spring.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>stg</id>
        <properties>
            <spring.active>stg</spring.active>
        </properties>
    </profile>
    <profile>
        <id>work</id>
        <properties>
            <spring.active>work</spring.active>
        </properties>
    </profile>
</profiles>

2.application.yml的修改或添加:

# Spring配置(该处一般配置多环境公用的配置项)
spring:
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  profiles: 
    active: $spring.active$
  # 文件上传
  servlet:
     multipart:
       # 单个文件大小
       max-file-size:  10MB
       # 设置总上传的文件大小
       max-request-size:  20MB
       

3.启动参数如:-Dspring.profiles.active=test ,启动会自动加载到对应的环境下(或application-test.yml)文件信息。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值