springboot中.yml文件参数的读取方式
目录
- 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. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)