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

目录

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

    yml文件参数的读取
    附上一个较为常见的application.yml文件示例
    server:port: 9999use-forward-headers: truetomcat:remote-ip-header: X-Real-IPprotocol-header: X-Forwarded-Protospring:#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.DruidDataSourcedruid:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/drink-bar?useUnicode=true&characterEncoding=utf8username: rootpassword: 123456# 初始化时建立的连接数initial-size: 5# 最大连接数max-active: 20# 最小连接数min-idle: 5# 获取连接最大等待时间,单位:毫秒max-wait: 2000# 是否缓存preparedStatementpool-prepared-statements: false# 最大preparedStatement缓存数,当pool-prepared-statements=true时需要大于0max-pool-prepared-statement-per-connection-size: -1# 检测连接是否失效的sqlvalidation-query: SELECT 'x'# 检测连接是否失效的超时时间,单位:秒validation-query-timeout: 2filters: stat,wall,log4j2,configtime-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: truedb-type: mysql# 打印慢sqllog-slow-sql: true# 超过200毫秒即为慢sqlslow-sql-millis: 200# sql防火墙wall:enabled: truedb-type: mysql# 对认定的攻击sql进行日志输出log-violation: true# 对认定的攻击sql抛出异常throw-exception: trueconfig:# 是否允许下述操作alter-table-allow: falsetruncate-allow: falsedrop-table-allow: falseupdate-where-none-check: true# metadata会暴露数据的表结构metadata-allow: true# 日志log4j2:enabled: true# log4j2仅记录druid的sql执行日志statement-log-enabled: falseconnection-log-enabled: falseresult-set-log-enabled: falsestatement-executable-sql-log-enable: true# 数据库连接池监控统计插件web-stat-filter:enabled: trueurl-pattern: /*# 过滤掉如下请求exclusions: '*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*'# 数据库连接池监控页面插件stat-view-servlet:enabled: trueurl-pattern: '/druid/*'reset-enable: truelogin-username: adminlogin-password: adminallow:deny:servlet:multipart:max-file-size: 10MBmax-request-size: 100MBredis:database: 2host: www.mist1.comport: 9000password: mistone23sjedis:pool:max-idle: 1000max-wait: -1min-idle: 2max-active: 10mybatis:mapper-locations:#- classpath:mapper/*.xml- classpath*:mapper/*.xml# 日志配置文件logging:config: classpath:log4j2/log4j2.xml# 分页配置pagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: trueparams: count=countSql# JWTjwt:header: Authorizationsecret: mySecret#token有效期一天expiration: 86400tokenHead: "Bearer "filePath: E://uploadfileServerUrl: http://file.mist1.comenv: dev1dada:shopNo: 21443-254867sourceId: 21443isPrepay: 1debug: truewx:template-msg:appid: wx092f89864f7afb50take_out_success: HS5BpCEGQkf-6fKjn0YeVKpEfqe_5WzmaGgNX1-sdT4self_take_success: HS5BpCEGQkf-6fKjn0YeVIEfy8nc_ZIm0QkqhTcBg2gremind_take: E7Oe-OBFh8ABAWudkti1MTUB7mXOOPTZoGTr5J0Um4Yorder_delivery: rYSNmi-tn-HS_68S2vmFrTlfbgD-MhWse3RS21GSFWsevaluate_wait: kZg0wJ8cXDSQVlWBxVkNbdHSvF8_tEZRoKf0yzQCUTQticketUrl: http://localhost:9999/api/v1/print/printTicketByJsontipUrl: http://localhost:9999/api/v1/print/printTipByJsonminiapp:configs:- appid: #微信小程序appidsecret: #微信小程序secrettoken: #微信小程序消息服务器配置的tokenaesKey: #微信小程序消息服务器配置的EncodingAESKeymsgDataFormat: JSON- appid: #微信小程序appidsecret: #微信小程序secrettoken: #微信小程序消息服务器配置的tokenaesKey: #微信小程序消息服务器配置的EncodingAESKeymsgDataFormat: JSONpay:appId: #微信小程序APPIDmchId: #商户号mchKey: #商户号秘钥subAppId: #服务商模式下的子商户公众账号IDsubMchId: #服务商模式下的子商户号keyPath: classpath:cert/apiclient_cert.p12notifyUrl: http://wx.mist1.com/wx/api/pay/notify/orderrefundUrl: http://wx.mist1.com/wx/api/pay/notify/refundtradeType: 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注解读取
    【springboot中.yml文件参数的读取方式】在service中通过@Autowired加载即可
    @Autowiredprivate WxTemplateProperties wxTemplateProperties;


    关于yml文件书写的注意事项 现在大家发现,在springboot里还是要用到配置文件的。 除了使用.properties外,springboot还支持 yml格式。
    个人觉得yml格式的可读性和..properties比起来差不多,有时候还没有不如properties 看起来那么规整。
    但是考虑到很多springboot项目会使用yml格式,还是简单讲讲,主要目的还是为了读懂其他人的项目。
    如图所示,左边是application.properties的写法,右边是application.yml的写法,他们达到的效果是相同的
    springboot中.yml文件参数的读取方式
    文章图片

    在application.yml 文件书写注意:
    1. 不同“等级” 用冒号隔开
    2. 次等级的前面是空格,不能使用制表符(tab)
    3. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着
    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

      推荐阅读