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

网友投稿 477 2022-08-28


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 iqxPS # 数据库连接密码

# 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

http:// 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: 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

diqxPSebug: 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. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python项目案例(python项目案例实战)
下一篇:将py文件打包成exe文件(python程序如何打包生成EXE文件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~