后端部署-配置文件加载顺序

配置文件加载顺序

参考文档

https://www.cnblogs.com/llp2333/p/17321306.html

加载顺序

  • 注:classpath 是指电脑系统的java的环境变量,该变量非必要设置
1、内置默认值:Spring Boot会首先加载内置的默认值,这些默认值定义在Spring Boot的代码中,例如,内置的默认端口号为8080。

2、应用级别(指项目中设置的应用名)的配置文件:Spring Boot会从以下位置加载应用级别的配置文件,这些位置按照优先级逐一检查:

当前目录下的/config文件夹。
当前目录。
classpath下的/config包。
classpath根目录。
例如,如果应用的名称为"myapp",则Spring Boot会尝试加载以下文件:

./config/myapp.properties
./config/myapp.yml
./myapp.properties
./myapp.yml
classpath:/config/myapp.properties
classpath:/config/myapp.yml
classpath:/myapp.properties
classpath:/myapp.yml

3、项目级别(指项目的文件,不受应用名影响)的配置文件:Spring Boot会从以下位置加载项目级别的配置文件,这些位置按照优先级逐一检查:

当前目录下的/config文件夹。
当前目录。
classpath下的/config包。
classpath根目录。
例如,如果应用的名称为"myapp",则Spring Boot会尝试加载以下文件:

./config/application.properties
./config/application.yml
./application.properties
./application.yml
classpath:/config/application.properties
classpath:/config/application.yml
classpath:/application.properties
classpath:/application.yml
  • (最优先)命令行参数:Spring Boot会加载命令行中指定的任何属性值,这些属性值会覆盖之前加载的任何属性值。例如,通过在命令行中指定–server.port=9090可以覆盖默认的8080端口号。

  • 应用级别和项目级别的加载优先级逐一降低,即优先级高的配置文件会覆盖优先级低的配置文件中的属性值。因此,应用级别的配置文件会覆盖项目级别的配置文件中的属性值,而命令行参数会覆盖所有其他位置的属性值。

application.properties

下载

  • 示例文件:[application.properties.example]https://pan.quark.cn/s/8d72ca3941d1)
  • 说明:文件名改为 application.properties 即可,存放位置查看 配置文件加载顺序

常用配置项

server.port

springboot 应用程序端口号,修改后需要重启项目

server.servlet.context-path

springboot 应用程序项目路径,即接口默认前缀

mysql.c3p[0].jdbcUrl

  • 使用了 c3p0 外部依赖
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVHgQSiy-1691978606816)(/api/project/11997256/files/33058694/imagePreview)]

  • mysql.c3p[0].jdbcUrl 的值是数据库jdbc链接字符串(参考文档: MySQL JDBC URL各参数详解https://zhuanlan.zhihu.com/p/621493992)

  • 格式:

jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... 
(注:在xml配置文件中,url中的 & 符号需要转义成 & )
  • 参数介绍:
参数名称	参数说明	缺省值
user    用户名	
password    用户密码(用于连接数据库)	
useUnicode	是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true	false
useSSL	MySQL在高版本需要指明是否进行SSL连接 在mysql连接字符串url中加入ssl=true或者false即可	
characterEncoding	当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk	false
autoReconnect	当数据库连接异常中断时,是否自动重新连接?	false
autoReconnectForPools	是否使用针对数据库连接池的重连策略	false
failOverReadOnly	是否使用针对数据库连接池的重连策略	true
maxReconnects	autoReconnect设置为true时,重试连接的次数	3
initialTimeout	autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒	2
connectTimeout	和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本	0
socketTimeout	socket操作(读写)超时,单位:毫秒。 0表示永不超时	0
allowMultiQueries	socket操作(读写)超时,单位:毫秒。 0表示永不超时	false
serverTimezone	设置时区 例如 serverTimezone=UTC(统一标准世界时间)或serverTimezone=Asia/Shanghai(中国时区)	
serverTimezone	如果tinyInt1isBit =true(默认),且tinyInt存储长度为1 ,则转为java.lang.Boolean 。否则转为java.lang.Integer。	true

特殊设置

  • 图1中的 3 个键必须有:dataSourceGroup,dataSourceBeanName,sessionFactoryBeanName

  • 格式按图中说明设定,值与数据名有关,详细用途未知

  • 图1
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLrfRslZ-1691978606817)(/api/project/11997256/files/33058724/imagePreview)]

  • 图2中文件 src>main>java>com>ruien>core>annotation>DbInfo.java 中 sourceGroup() 的 default 值,和 mysql.c3p[0].jdbcUrl 的数据库名称,和图1中的 dataSourceGroup 的值,3个值应设置一致

  • :实际链接数据库只受mysql.c3p[0].jdbcUrl影响,其他2个值的影响未知

  • 图2
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXuDHT3t-1691978606817)(/api/project/11997256/files/33058792/imagePreview)]

文件内容示例


######### springboot 应用程序端口号
# (默认8080)
server.port=112

######### springboot 应用程序名称
# 区分微服务、日志等
spring.application.name=ruien-basic-manager

######### springboot 应用程序项目路径
# (默认 / ,例 localhost:8080/xxxxxx)
#server.servlet.context-path=/springboot/

########## springboot 文件上传配置项
# (默认true)是否允许附件上传
#spring.servlet.multipart.enabled=true
# 指定临时文件的存放目录
#spring.servlet.multipart.location=
# (默认0)限定附件上传超过一定长度,就先写到临时文件
#spring.servlet.multipart.file-size-threshold=0
# (默认1MB)指定单个上传文件的最大长度
#spring.servlet.multipart.max-file-size=100MB
# (默认10MB)指定单次HTTP请求的上传最大长度
#spring.servlet.multipart.max-request-size=1024MB

######### jetty 的配置项
# Maximum size in bytes of the HTTP post or put content
#server.jetty.max-http-post-size=1024000

# http最大请求头大小,默认8K
# 一般用于 base64 方式传图片需要修改该大小
# 该设置有问题,设置大数后,每个请求都是该大小,容易造成内存溢出,参考 https://www.jianshu.com/p/ab054620da64
#server.max-http-header-size=1024000

######### 数据库(参考 https://blog.csdn.net/qq_42495966/article/details/109292268)

### 最基础的参数配置
# 数据库驱动
mysql.c3p[0].driverClass=com.mysql.cj.jdbc.Driver
# jdbc数据库连接地址(值换行用“\”表示)
mysql.c3p[0].jdbcUrl=jdbc:mysql://127.0.0.1:3306/ruien_community\
  ?\
  allowMultiQueries=true\
  &serverTimezone=Asia/Shanghai\
  &useUnicode=true\
  &characterEncoding=UTF-8\
  &useJDBCCompliantTimezoneShift=true
# 数据库连接用户名
mysql.c3p[0].user=root
# 数据库连接密码
mysql.c3p[0].password=

### 基础的参数配置
# (默认3)连接池初始化时创建的连接数(介于maxPoolSize和minPoolSize之间)
mysql.c3p[0].initialPoolSize=3
# (默认15)连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大
mysql.c3p[0].maxPoolSize=15
# (默认3)连接池保持的最小连接数,后面的maxIdleTimeExcessConnections跟这个配合使用来减轻连接池的负载
mysql.c3p[0].minPoolSize=3
# (默认3)连接池在无空闲连接可用时一次性创建的新数据库连接数
mysql.c3p[0].acquireIncrement=3

### 管理池大小和连接时间的配置
# (默认0)连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接如果为0,则永远不会断开连接
mysql.c3p[0].maxIdleTime=0

### 配置连接测试
# (默认0)每个几秒检查所有连接池中的空闲连接
mysql.c3p[0].idleConnectionTestPeriod=0
# (默认false)如果为true,在连接释放的同事将校验连接的有效性。
mysql.c3p[0].testConnectionOnCheckout=false

### 配置语句池
# (默认0)JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量
mysql.c3p[0].maxStatements=0

### 配置数据库的中断恢复
# (默认30)定义在从数据库获取新连接失败后重复尝试的次数
mysql.c3p[0].acquireRetryAttempts=30
# (默认1000)两次连接间隔时间,单位毫秒
mysql.c3p[0].acquireRetryDelay=1000
# (默认false)获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。
# 但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。
# 如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭
mysql.c3p[0].breakAfterAcquireFailure=false

### 未知用途,但必须有
# 值=数据库名
mysql.c3p[0].dataSourceGroup=ruien_community
# 值=dataSource_数据库名_default
mysql.c3p[0].dataSourceBeanName=dataSource_ruien_community_default
# 值=sqlSessionFactory_数据库名_default
mysql.c3p[0].sessionFactoryBeanName=sqlSessionFactory_ruien_community_default

######### mybatis 的配置项(基于Java的持久层框架)
# Mapper接口和Mapper映射文件分开存放,在resources下需指定mapper映射文件存放的位置
mybatis.mapper-locations=classpath:mapper/**/*.xml
# 自动将以下划线方式命名的数据库列映射到Java对象的驼峰式命名属性中,默认false,true/false
mybatis.configuration.map-underscore-to-camel-case=true

######### mybatis分页插件 的配置项
# PageHelper分页插件的起始下标是1,如果起始页面设置为0,那么返回的结果将和下标是1的重复!!!!
# offset作为PageNum使用
pagehelper.offsetAsPageNum=true
# RowBounds方式是否做count查询
pagehelper.rowBoundsWithCount=true
# 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页
pagehelper.pageSizeZero=true
# 分页合理化,true开启,如果分页参数不合理会自动修正。默认false不启用
pagehelper.reasonable=false
# 用于从对象中根据属性名取值, 可以配置 #pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值
# 默认值为#pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZe#ro=pageSizeZero
pagehelper.params=pageNum=pageHelperStart;pageSize=pageHelperRows;
# 默认值false,分页插件会从查询方法的参数值中,自动根据 params 配置的字段中取值,查找到合适的值时就会自动分页。
pagehelper.supportMethodsArguments=false

######### minio 配置项
# 上传服务器地址
minio.url=
# 外网访问地址
minio.domainUrl=
# 公钥
minio.accessKey=
# 私钥
minio.secretKey=

######### 设备服务相关地址配置
# 考勤机服务地址
device.attendance-machine.request-url=
# 门禁服务地址
device.access-control.request-url=
# 水电表服务地址
device.water-electricity-meter.request-url=
# 上传人脸服务地址
device.face.request-url=
# 上传人脸库集合名称配置
device.face.collection-name=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值