广西建设网站在线服务wordpress更新机制
news/
2025/9/23 10:10:56/
文章来源:
广西建设网站在线服务,wordpress更新机制,垂直门户网站建设,大连百度推广优化文章目录 配置文件一、Yaml 文件1.1 修改banner1.2 日志1.3 端口1.4 属性提示消失解决方案 二、Properties 文件三、配置高级3.1 临时属性3.2 临时属性#xff08;开发环境#xff09;3.3 配置文件四级分类3.3.1 原始配置文件#xff08;四级#xff09;3.3.2 config目录下… 文章目录 配置文件一、Yaml 文件1.1 修改banner1.2 日志1.3 端口1.4 属性提示消失解决方案 二、Properties 文件三、配置高级3.1 临时属性3.2 临时属性开发环境3.3 配置文件四级分类3.3.1 原始配置文件四级3.3.2 config目录下的配置文件三级3.3.3 工程目录同级下的配置文件二级3.3.4 jar包路同路径下config一级3.3.5 总结四级 3.4 自定义配置文件3.4.1 重要说明 3.5 多环境开发yaml3.5.1 多环境开发一个文件版本3.5.2 多环境开发多文件版本3.5.3 多环境开发配置文件书写技巧3.5.4 多环境分组管理3.5.4.1 include 属性3.5.4.2 group属性 3.6 多环境开发控制3.6.1 Maven与Springboot多环境兼容 配置文件 之前学的时候后草草过去了但是工作一段时间后发现经常和它打交道之前学的也没有做笔记 springboot中默认的配置文件是application.properties但是我们一般不使用这种我们一般使用application.yaml文件
application.properties 和 yml 文件在并存时同一目录下application.properties 优先级更好会先读它若它没有再去读 yml 中的值
Springboot官方文档
选择一个合适的版本查看文档 从中间划线的地方开始上面是文档下面是附录
附录中的第一个信息就是Application Properties 下面就是所有的配置了 配置文件支持如下三种 三种文件的配置优先级propertiesymlyaml
不同配置文件中相同配置按照加载优先级相互覆盖不同配置文件中不同配置全部保留
一、Yaml 文件
1.1 修改banner
下图所示就是banner 当我在文件中输入banner时会出来如下的配置
imagebanner可以用一个图片
image.location:设定图片的位置 会有如下三个参数
log:记录到日志里面
console打印到控制台里面
off:关闭 1.2 日志
如下图日志相关的配置 比如说日志的根路径的设置级别
将日志级别设置成debug我们一般是info
logging:level:root: debuglogging:level:root: info1.3 端口
配置端口号
server:port: 8001配置项目名称
#项目的访问路径
server:servlet:context-path: /warehouse假如说把配置文件中下面的坐标注释掉上面的两个配置不会生效因为我们用什么技术就在配置文件中配置什么不是乱配置的
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency1.4 属性提示消失解决方案
原因springboot在idea环境下提供的功能失效了。提示的功能是IDEA带来的不是Springboot带来的
解决方案
步骤一 步骤二 步骤三 如果有的话在这个地方勾选上就行 二、Properties 文件
与Yaml文件差不多只不过语法不通properties优先级高一点因为我主要使用yaml文件所以这个文件就不介绍了
三、配置高级
3.1 临时属性 临时属性必须是当前boot工程支持的属性否则设置无效 我们在服务器启动jar包时发现80端口冲突但是我们又不能改application.yaml配置文件此时怎么办
java -jar jarPackageName.jar --server.port8080如果要配置多个临时属性呢 空格后加即可
java -jar jarPackageName.jar --server.port8080 --spring.datasource.druid.passwordroot命令行中的属性把配置中的属性覆盖掉了那优先级是怎么回事呢
核心功能 (spring.io)
发现命令行的优先级顺序要比配置文件的高 3.2 临时属性开发环境
怎么在idea中测试临时属性 在如下所示的地方添加参数即可 假设没有“Program arguments”的话可以按照下面的步骤添加 配置完上面后添加临时参数 “–server.port8999” 如下图所示成功修改端口为8999 关注一下启动类args参数和Program arguments有关系吗?
有关系
SpringBootApplication
public class PaymentDemoApplication {public static void main(String[] args) {SpringApplication.run(PaymentDemoApplication.class, args);}}我们打印一下 不携带参数启动程序如下所示不传入args参数了
目的安全性
SpringBootApplication
public class PaymentDemoApplication {public static void main(String[] args) {SpringApplication.run(PaymentDemoApplication.class);}}3.3 配置文件四级分类
3.3.1 原始配置文件四级 3.3.2 config目录下的配置文件三级
上线时的配置和研发时的配置大相径庭我们不能完全依靠临时命令来解决此问题 Springboot为我们提供了一套机制在现有的配置上再做一套配置 在resource目录下创建一个全新的config目录将配置文件粘贴到里面去。 此时config目录下有一个application.yml文件与config目录同级有一个application.yml文件 config目录下的文件的配置如下所示
server:port: 8083 #服务端口config目录同级文件的配置
server:port: 8090 #服务端口启动项目。端口号为8083 所以对于配置文件一个提供给程序员另一个提供给项目负责人做项目的总控
假如说两个配置文件中有冲突怎么办 如果两个配置文件中对同一个配置进行了配置采用优先级高的 你配的我没配沿用下来我配的你没配沿用下来
3.3.3 工程目录同级下的配置文件二级
我们在开发中会有需要的密码比如数据库密码这些是很重要的一般客户不会给我们这怎么办呢 将jar包和配置文件放到一起 假如说这个配置文件中配置的端口号是82 输入命令
java -jar jar包名.jar启动后观察端口号发现是82 这个文件会覆盖开发时的配置文件
此处的application的文件一般是运维人员使用
但是运维人员上面还有一个BOOS
3.3.4 jar包路同路径下config一级
对于运维人员的BOOS会采用下面的方式
在jar包同级处添加一个config目录在此目录下放置一个application文件夹 此文件下的端口号是8888 3.3.5 总结四级
1级2级都是在jar包外的3级4级是在jar包内的 项目类路径配置文件:服务于开发人员本机开发与测试
项目类路径config目录中配置文件: 服务于项目经理整体调控
工程路径配置文件:服务于运维人员配置涉密线上环境
工程路径config目录中配置文件: 服务于运维经理整体调控
1级与2级留做系统打包后设置通用属性1级常用于运维经理进行线上整体项目部署方案调控3级与4级用于系统开发阶段设置通用属性3级常用于项目经理进行整体项目属性调控
3.4 自定义配置文件 配置文件可以修改名称通过启动参数设定 配置文件可以修改路径通过启动参数设定 微服务开发中配置文件通过配置中心进行设置 我们的配置文件一般是application.yaml或者application.yml或者application.properties叫其他的名字可以吗
如果我们想加载ebank.properties文件怎么办 第一种办法
指定文件名 第二种办法
根据文件路径寻找。绝对路径与相对路径均可
如果是两个文件呢
ebank.yaml配置的端口号是84ebank-server.yaml配置的端口号是85 当我们启动程序后运行端口号是85即ebank.yaml配置文件中配置的端口生效了
将ebank-server.yaml配置在前会发生什么 此时启动的是84端口即ebank-server.yaml文件
3.4.1 重要说明
单服务器项目使用自定义配置文件需求低对服务器项目使用自定义配置文件需要较高将所有配置放在一个目录中统一管理基于SpringCloud技术将所有的服务器将不再设置配置文件而是通过配置中心进行设定动态加载配置信息 SpringBoot在开发和运行环境均支持使用临时参数修改工程配置 Springboot支持4级配置文件应用于开发与线上环境进行配置的灵活设置 Springboot支持使用自定义配置文件的形式修改配置文件存储位置 基于微服务开发时配置文件将使用配置中心进行管理
3.5 多环境开发yaml
每个环境对应的配置都是有点区别的。 多环境开发需要设置若干种常用环境例如开发、生产、测试环境 yaml格式中设置多环境使用**—区分环境设置边界** 每种环境的区别在于加载的配置属性不同 启用某种环境时需要指定启动时使用该环境
3.5.1 多环境开发一个文件版本
# 应用环境(使用哪个环境)
# 默认加载的环境我们在这里会设置一些公共的配置三种环境都具有的
spring:profiles:active: pro---
# 设置环境
# 生产环境
spring:profiles: proserver:port: 801
# 如果多个环境怎么把多个环境区分开 --- 三个减号即可---
# 开发环境
spring:profiles: devserver:port: 802---
# 测试环境
spring:profiles: testserver:port: 803根据上面的配置进行启动程序控制台信息如下所示运行环境是pro端口号是801 假设将注释掉会有什么效果呢
spring:profiles:active: pro采用了默认的8080端口 3.5.2 多环境开发多文件版本
如下图所示四个配置文件配置文件中的内容与3.4.1中环境对应只不过将—替换成了文件而已 application.yml
server:port: 8090 #服务端口# 指定环境
spring:profiles:active: devapplication-dev.yml
server:port: 802 #服务端口application-prod.yml
server:port: 801application-test.yml
server:port: 803运行之后如下图所示 为配置文件起名时application-环境.yml
3.5.3 多环境开发配置文件书写技巧
主配置文件设置公共配置全局环境分类配置文件中常用于设置冲突属性局部 假如说多环境下MySQL数据库一致那就写在application.yaml文件中如果不一致的话就分别写在application-环境.yaml中即可以此来区别 3.5.4 多环境分组管理
根据功能对配置文件中的信息进行拆分并制作成独立的配置文件命名规则如下
application-devDB.ymlapplication-devRedis.yamlapplication-devMVC.yml
3.5.4.1 include 属性
使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效多个环境间使用逗号分隔
spring:profiles:active: devinclude: devDB,devRedis,devMVC展示如下
application.yml文件
spring:profiles:active: devapplication-dev.yml
server:port: 81 #服务端口application-devMVC.yml
server:servlet:context-path: /ebankapplication-devDB.yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/payment_demo?serverTimezoneGMT%2B8characterEncodingutf-8username: rootpassword: root运行项目
端口改了 但是context path 没有改还是为空说明application-devMVC.yml配置文件没有生效原因是并没有在application.yaml文件中说加载application-devMVC.yml文件 正确的方式
spring:profiles:active: devinclude: devMVC,devDB再运行一下项目发现成功了 然后我们发现The following profiles are active: devMVC,devDB,dev里有一个顺序的问题后加载的会覆盖先加载的比如devDB中和dev中有不同配置那dev配置文件中的配置会将DevDB文件中的配置覆盖
假如说我们将环境变成pro后include中对应的也要变这样之后每次都要改非常的麻烦这种格式并不适用于我们现在的这种开发
spring:profiles:active: proinclude: proMVC,proDB3.5.4.2 group属性 多环境开发使用group属性设置配置文件分组便于线上维护管理 像这种开发要怎么做
Springboot2.4版本之后include属性不用了换成了group属性
如下所示当我们启动dev后其实是启动的dev这个组“devMVC,devDB”
spring:profiles:active: devgroup:dev: devDB,devMVCpro: proDB,proMVC启动后“dev,devDB,devMVC” 注意我们之前方式启动的时候顺序是devDB,devMVCdev。 而现在是dev,devDB,devMVC 说明dev配置文件已经不是主配置文件了 假如说dev,devDB,devMVC同时配置了不同的端口号最终devMVC会生效 3.6 多环境开发控制
3.6.1 Maven与Springboot多环境兼容
多环境开发控制不仅Springboot有maven也有只要与构建有关的工具它都会有多环境的设定 假如在maven中设置的是生产环境在springboot中设置的是开发环境哪一个会有效她俩冲突了怎么办springboot依赖maven运行还是maven依赖Springboot运行
解释springboot工作时是基于maven坐标的配置进行工作的所以maven一定是在前运行springboot是在后运行。
如果maven与springboot都配置环境的话maven是首个配置springboot的配置是辅助作用的
主配maven让springboot读取maven的配置
application.yaml文件如下所示
spring:profiles:active: devgroup:dev: devDB,devMVCpro: devDB,proMVC首先使用maven工具clean一下将target包清楚掉之后运行程序 之后在pom.xml文件中配置多环境开发
!--设置多环境开发--
profiles!--配置环境--profileidenv_dev/idproperties!--这个地方的profile.active是自己定义的叫abc都行--profile.activedev/profile.active/properties!--设定哪个环境生效--activation!--是否默认启动--activeByDefaulttrue/activeByDefault/activation/profile!--配置环境--profileidenv_pro/idproperties!--这个地方的profile.active是自己定义的叫abc都行--profile.activepro/profile.active/properties/profile/profiles之后我们要在application中读取profile.active的值怎么读
spring:profiles:active: profile.activegroup:dev: devDB,devMVCpro: proDB,proMVC…占位符读取maven对应配置属性值 完成后直接package 进行打包
查看application中 active 对应的值如下图所示 加入将下面的语句在dev中删除将其加入到pro中会有什么现象
activeByDefaulttrue/activeByDefault我们这样打包之后jar包里已经沿用了maven的设置springboot与maven的环境就统一了
有时候我们在pom文件中将dev改成pro的启动时还是会显示dev此时clean之后在启动还是显示dev但是pom配置文件中已经是pro了这是怎么回事
这是idea的一个bug。那怎么让pro生效呢
执行一下compile手动编译重新加载pom里面的属性重新来一轮再执行程序这个时候就变成pro了
le.active
[外链图片转存中…(img-YRBeH4hj-1695865512128)]
之后我们要在application中读取profile.active的值怎么读
spring:profiles:active: profile.activegroup:dev: devDB,devMVCpro: proDB,proMVC…占位符读取maven对应配置属性值 完成后直接package 进行打包[外链图片转存中…(img-Se7eAcIr-1695865512129)]
查看application中 active 对应的值如下图所示
[外链图片转存中…(img-2jSXKmWF-1695865512129)]
加入将下面的语句在dev中删除将其加入到pro中会有什么现象
activeByDefaulttrue/activeByDefault[外链图片转存中…(img-bH7vhofg-1695865512130)]
我们这样打包之后jar包里已经沿用了maven的设置springboot与maven的环境就统一了
有时候我们在pom文件中将dev改成pro的启动时还是会显示dev此时clean之后在启动还是显示dev但是pom配置文件中已经是pro了这是怎么回事
这是idea的一个bug。那怎么让pro生效呢
执行一下compile手动编译重新加载pom里面的属性重新来一轮再执行程序这个时候就变成pro了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912161.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!