软件编程
位置:首页>> 软件编程>> java编程>> springboot中.yml文件参数的读取方式

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

作者:路过的人儿  发布时间:2021-06-20 00:57:51 

标签: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的写法,他们达到的效果是相同的

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

在application.yml 文件书写注意:

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

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

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

来源:https://www.jianshu.com/p/dc38ef585220

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com