Maison  >  Article  >  Java  >  Quelle est la méthode de conception yml multi-niveaux et multi-environnements dans le projet SpringBoot ?

Quelle est la méthode de conception yml multi-niveaux et multi-environnements dans le projet SpringBoot ?

PHPz
PHPzavant
2023-05-30 23:36:491529parcourir

Scénario de demande

Il existe quelques configurations de base fixes courantes dans le module d'infrastructure. Par exemple, y compris, mais sans s'y limiter, la configuration des journaux, la configuration principale de Spring et la configuration commune associée à MyBatis Plus. Ces configurations sont souvent indépendantes de l'environnement. Comment les réutiliser ?

# 日志配置
logging:
  level:
    # 记得配置到包名
    com.agileboot: debug
    org.springframework: info
  pattern:
    console: "%date %thread %green(%level) [%cyan(%logger{10}):%magenta(%line)] %red(%method) | %msg%n"
# Spring配置
spring:
  # 文件上传
  servlet:
     multipart:
       # 单个文件大小
       max-file-size:  10MB
       # 设置总上传的文件大小
       max-request-size:  20MB
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
  jackson:
    deserialization:
      fail-on-unknown-properties: false
    serialization:
      write-dates-as-timestamps: false
    date-format: yyyy-MM-dd HH:mm:ss

Il existe également des configurations indépendantes de l'environnement dans le module d'infrastructure. Par exemple, Mysql, Redis ou MQ. Comment distinguer les environnements ?

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

Nous configurons généralement les configurations liées aux journaux dans le fichier logback.xml. Comment implémenter différents chemins de journalisation dans différents environnements ?

L'effet recherché

  • Réutilisez la configuration fixe dans le module d'infrastructure.

  • Distinguer la configuration de plusieurs environnements.

  • logback log introduit la configuration multi-environnements.

Implémentation

Nous pouvons définir un fichier application.yml pour le module Admin. La configuration spécifique au module est décrite dans le fichier. Par exemple, port, chemin d'accès, etc.

# 开发环境配置
server:
  # 服务器的HTTP端口,默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # 连接数满后的排队数,默认为100
    accept-count: 1000
    threads:
      # tomcat最大线程数,默认为200
      max: 800
      # Tomcat启动初始化的线程数,默认值10
      min-spare: 100
# Spring配置 如果需要无Mysql  无Redis直接启动的话  dev改为test
# 生产环境把dev改为prod
spring:
  profiles:
    active: basic,dev

Créez un nouveau

applicaiton-basic.yml dans le module d'infrastructure et configurez certaines configurations de réutilisation fixes de base indépendantes de l'environnement.

application-dev.yml, configurez certaines configurations liées à l'environnement, telles que la configuration de la base de données.

Spécifiez ensuite les fichiers de base et dev dans la configuration spring.profiles.active.

Quelle est la méthode de conception yml multi-niveaux et multi-environnements dans le projet SpringBoot ?

À ce moment, Springboot trouvera automatiquement les fichiers applicaiton-basic.yml et application-dev.yml.
Notre fichier de configuration final est donc la configuration superposée par applicaiton.yml+applicaiton-basic.yml+applicaiton-dev.yml.

Nous pouvons créer un nouveau fichier logback-spring.xml pour configurer la journalisation multi-environnements. Supposons que nous souhaitions configurer différents chemins de journalisation en fonction de l'environnement. Dans des fichiers tels que application-dev.yml, vous pouvez configurer logging.file.path.

Quelle est la méthode de conception yml multi-niveaux et multi-environnements dans le projet SpringBoot ?

Utilisez ensuite la balise springProperty dans le fichier logback-spring.xml pour lire le chemin configuré dans le yml multi-environnement.

Quelle est la méthode de conception yml multi-niveaux et multi-environnements dans le projet SpringBoot ?

À ce moment, le chemin du journal lira respectivement les chemins configurés dans différents environnements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer