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

 更新时间:2022年02月16日 08:59:39   作者:路过的人儿  
这篇文章主要介绍了springboot中.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. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着

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

相关文章

  • 解决MyBatis中模糊搜索使用like匹配带%字符时失效问题

    解决MyBatis中模糊搜索使用like匹配带%字符时失效问题

    Mybatis是我们日常项目中经常使用的框架,在项目中我们一般会使用like查询作为模糊匹配字符进行搜索匹配,下面的Mapper.xml是我们使用like在项目中进行模糊匹配的常用方式,感兴趣的朋友跟随小编一起看看吧
    2021-09-09
  • Java jvm垃圾回收详解

    Java jvm垃圾回收详解

    这篇文章主要介绍了JVM的垃圾回收总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • Java发送邮件遇到的常见需求汇总

    Java发送邮件遇到的常见需求汇总

    这篇文章主要介绍了Java发送邮件遇到的常见需求汇总的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • SpringBoot程序打包失败(.jar中没有主清单属性)

    SpringBoot程序打包失败(.jar中没有主清单属性)

    在学习SpringBoot,打包SpringBoot程序后,在cmd运行出现了 某某某.jar中没有注清单属性,本文就来介绍一下原因以及解决方法,感兴趣的可以了解一下
    2023-06-06
  • 解决springboot遇到autowire注入为null的问题

    解决springboot遇到autowire注入为null的问题

    这篇文章主要介绍了解决springboot遇到autowire注入为null的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java咖啡馆(1)——叹咖啡

    Java咖啡馆(1)——叹咖啡

    这篇文章主要给大家介绍了关于Java咖啡馆之叹咖啡,需要的朋友可以参考下
    2006-12-12
  • Java反应式框架Reactor中的Mono和Flux

    Java反应式框架Reactor中的Mono和Flux

    这篇文章主要介绍了Java反应式框架Reactor中的Mono和Flux,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Hibernate框架中的缓存技术详解

    Hibernate框架中的缓存技术详解

    这篇文章主要介绍了Hibernate框架中的缓存技术,结合实例形式详细分析了Hibernate框架缓存机制的原理与具体使用技巧,需要的朋友可以参考下
    2016-03-03
  • IntelliJ IDEA将导入的项目转成maven项目

    IntelliJ IDEA将导入的项目转成maven项目

    这篇文章主要介绍了IntelliJ IDEA将导入的项目转成maven项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 设计模式之构建(Builder)模式 建造房子实例分析

    设计模式之构建(Builder)模式 建造房子实例分析

    构建模式主要用来针对复杂产品生产,分离部件构建细节,以达到良好的伸缩性,考虑到设计模式来源于建筑学,因此举一个建造房子的例子,需要的朋友可以参考下
    2012-12-12

最新评论