信息发布→ 登录 注册 退出

springboot中.yml文件参数的读取方式

发布时间:2026-01-11

点击量:
目录
  • yml文件参数的读取
    • 附上一个较为常见的application.yml文件示例
    • 正常在controller中
    • 通过config文件的读取
  • 关于yml文件书写的注意事项

    yml文件参数的读取

    附上一个较为常见的application.yml文件示例

    server:
      port: 9999
      use-forward-headers: true
      tomcat:
        remote-ip-header: X-Real-IP
        protocol-header: X-Forwarded-Proto
    spring:
      #  datasource:
      #    type: com.alibaba.druid.pool.DruidDataSource    # 配置当前要使用的数据源的操作类型
      #    driver-class-name: org.gjt.mm.mysql.Driver      # 配置MySQL的驱动程序类
      #    url: jdbc:mysql://127.0.0.1:3306/drink?useUnicode=true&characterEncoding=UTF-8           # 数据库连接地址
      #    username: root                                  # 数据库用户名
      #    password: root                                  # 数据库连接密码
      #    dbcp2:                                          # 进行数据库连接池的配置
      #      min-idle: 5                                   # 数据库连接池的最小维持连接数
      #      initial-size: 5                               # 初始化提供的连接数
      #      max-total: 5                                  # 最大的连接数
      #      max-wait-millis: 200                          # 等待连接获取的最大超时时间
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/drink-bar?useUnicode=true&characterEncoding=utf8
          username: root
          password: 123456
          # 初始化时建立的连接数
          initial-size: 5
          # 最大连接数
          max-active: 20
          # 最小连接数
          min-idle: 5
          # 获取连接最大等待时间,单位:毫秒
          max-wait: 2000
          # 是否缓存preparedStatement
          pool-prepared-statements: false
          # 最大preparedStatement缓存数,当pool-prepared-statements=true时需要大于0
          max-pool-prepared-statement-per-connection-size: -1
          # 检测连接是否失效的sql
          validation-query: SELECT 'x'
          # 检测连接是否失效的超时时间,单位:秒
          validation-query-timeout: 2
          filters: stat,wall,log4j2,config
          time-between-log-stats-millis: 604800000
          #      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAI0Q56HOXI2Z33kNpgOxvMbaE7BRUw0pZMLPZA0Pe+J/6R7Cq97BUCDygkzL7evUfQmPprNh6KKaSKXV0dBVghcCAwEAAQ==
          # Spring aop监控的包路径
          aop-patterns: cn.greedystar.springbootdemo.modules.service.*
          filter:
            config:
              enabled: true
            # 监控统计
            stat:
              enabled: true
              db-type: mysql
              # 打印慢sql
              log-slow-sql: true
              # 超过200毫秒即为慢sql
              slow-sql-millis: 200
            # sql防火墙
            wall:
              enabled: true
              db-type: mysql
              # 对认定的攻击sql进行日志输出
              log-violation: true
              # 对认定的攻击sql抛出异常
              throw-exception: true
              config:
                # 是否允许下述操作
                alter-table-allow: false
                truncate-allow: false
                drop-table-allow: false
                update-where-none-check: true
                # metadata会暴露数据的表结构
                metadata-allow: true
            # 日志
            log4j2:
              enabled: true
              # log4j2仅记录druid的sql执行日志
              statement-log-enabled: false
              connection-log-enabled: false
              result-set-log-enabled: false
              statement-executable-sql-log-enable: true
          # 数据库连接池监控统计插件
          web-stat-filter:
            enabled: true
            url-pattern: /*
            # 过滤掉如下请求
            exclusions: '*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*'
          # 数据库连接池监控页面插件
          stat-view-servlet:
            enabled: true
            url-pattern: '/druid/*'
            reset-enable: true
            login-username: admin
            login-password: admin
            allow:
            deny:
      servlet:
        multipart:
          max-file-size: 10MB
          max-request-size: 100MB
      redis:
        database: 2
        host: www.mist1.com
        port: 9000
        password: mistone23s
        jedis:
          pool:
            max-idle: 1000
            max-wait: -1
            min-idle: 2
            max-active: 10
    mybatis:
      mapper-locations:
    #    - classpath:mapper/*.xml
        - classpath*:mapper/*.xml
    # 日志配置文件
    logging:
      config: classpath:log4j2/log4j2.xml
    # 分页配置
    pagehelper:
      helper-dialect: mysql
      reasonable: true
      support-methods-arguments: true
      params: count=countSql
    # JWT
    jwt:
      header: Authorization
      secret: mySecret
      #token有效期一天
      expiration: 86400
      tokenHead: "Bearer "
    filePath: E://upload
    fileServerUrl: http://file.mist1.com
    env: dev1
    dada:
      shopNo: 21443-254867
      sourceId: 21443
      isPrepay: 1
    debug: true
    wx:
      template-msg:
        appid: wx092f89864f7afb50
        take_out_success: HS5BpCEGQkf-6fKjn0YeVKpEfqe_5WzmaGgNX1-sdT4
        self_take_success: HS5BpCEGQkf-6fKjn0YeVIEfy8nc_ZIm0QkqhTcBg2g
        remind_take: E7Oe-OBFh8ABAWudkti1MTUB7mXOOPTZoGTr5J0Um4Y
        order_delivery: rYSNmi-tn-HS_68S2vmFrTlfbgD-MhWse3RS21GSFWs
        evaluate_wait: kZg0wJ8cXDSQVlWBxVkNbdHSvF8_tEZRoKf0yzQCUTQ
        ticketUrl: http://localhost:9999/api/v1/print/printTicketByJson
        tipUrl: http://localhost:9999/api/v1/print/printTipByJson
      miniapp:
        configs:
          - appid: #微信小程序appid
            secret: #微信小程序secret
            token: #微信小程序消息服务器配置的token
            aesKey: #微信小程序消息服务器配置的EncodingAESKey
            msgDataFormat: JSON
          - appid: #微信小程序appid
            secret: #微信小程序secret
            token: #微信小程序消息服务器配置的token
            aesKey: #微信小程序消息服务器配置的EncodingAESKey
            msgDataFormat: JSON
      pay:
        appId: #微信小程序APPID
        mchId: #商户号
        mchKey: #商户号秘钥
        subAppId: #服务商模式下的子商户公众账号ID
        subMchId: #服务商模式下的子商户号
        keyPath: classpath:cert/apiclient_cert.p12
        notifyUrl: http://wx.mist1.com/wx/api/pay/notify/order
        refundUrl: http://wx.mist1.com/wx/api/pay/notify/refund
        tradeType: JSAPI
    

    正常在controller中

    可以通过@Value注解机型获取

     @Value("${jwt.header}")
      private String token_header;

    但是在service,serviceImpl等层中,没办法通过这种方式获取,可以通过另外一种方式进行获取

    通过config文件的读取

    package com.drink.admin.core.config;
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    @Data
    @Component
    @ConfigurationProperties(prefix = "wx.template-msg")
    public class WxTemplateProperties {
      private String appid;
      private String take_out_success;
      private String self_take_success;
      private String remind_take;
      private String order_delivery;
      private String evaluate_wait;
      private String ticketUrl;
      private String tipUrl;
    }

    使用@ConfigurationProperties注解读取

    在service中通过@Autowired加载即可

     @Autowired
        private WxTemplateProperties wxTemplateProperties;

    关于yml文件书写的注意事项

    现在大家发现,在springboot里还是要用到配置文件的。 除了使用.properties外,springboot还支持 yml格式。

    个人觉得yml格式的可读性和..properties比起来差不多,有时候还没有不如properties 看起来那么规整。 

    但是考虑到很多springboot项目会使用yml格式,还是简单讲讲,主要目的还是为了读懂其他人的项目。

    如图所示,左边是application.properties的写法,右边是application.yml的写法,他们达到的效果是相同的

    在application.yml 文件书写注意:

    1. 不同“等级” 用冒号隔开

    2. 次等级的前面是空格,不能使用制表符(tab)

    3. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!