常州建设网站,合肥网站建设市场分析,猪八戒网站开发合同,影视网站视频接口怎么做目录 一、临时属性设置
1. 简介
2. 属性加载优先级
那是否还有其他的配置方式呢#xff1f;
3. 知识小结
二、开发环境中使用临时属性
1. 如何操作
2. 知识小结
3. 思考
三、配置文件分类
1. 简介
2. 4个级别
3. 为什么设计多种配置文件#xff1f;
一个典型的应…目录 一、临时属性设置
1. 简介
2. 属性加载优先级
那是否还有其他的配置方式呢
3. 知识小结
二、开发环境中使用临时属性
1. 如何操作
2. 知识小结
3. 思考
三、配置文件分类
1. 简介
2. 4个级别
3. 为什么设计多种配置文件
一个典型的应用
级别1和2什么时候使用呢
4. 知识小结
四、自定义配置文件
1. 代码位置
2. 如何自定义配置文件
3. 自定义配置文件
3.1. 两种方式
方式一使用临时属性设置配置文件名
方式二使用临时属性设置配置文件路径
3.2 可以设置加载多个配置文件
3.3 温馨提示
3.4 知识小结 一、临时属性设置
1. 简介
目前我们的程序包打好了可以发布了。
但是程序包打好以后里面的配置都已经是固定的了比如配置了服务器的端口是8080。
如果我要启动项目发现当前我的服务器上已经有应用启动起来并且占用了8080端口这个时候就尴尬了。
难道要重新把打包好的程序修改一下吗比如我要把打包好的程序启动端口改成80。 SpringBoot提供了灵活的配置方式如果你发现你的项目中有个别属性需要重新配置可以使用临时属性的方式
快速修改某些配置。
方法也特别简单在启动的时候添加上对应参数就可以了。
java –jar springboot.jar --server.port80
上面的命令是启动SpringBoot程序包的命令在命令输入完毕后空一格然后输入两个-号。
下面按照属性名属性值的形式添加对应参数就可以了。
记得这里的格式不是yaml中的书写格式当属性存在多级名称时中间使用点分隔和properties文件中的属
性格式完全相同。 如果你发现要修改的属性不止一个可以按照上述格式继续写属性与属性之间使用空格分隔。
java –jar springboot.jar --server.port80 --logging.level.rootdebug
2. 属性加载优先级
现在我们的程序配置受两个地方控制了第一配置文件第二临时属性。
并且我们发现临时属性的加载优先级要高于配置文件的。
那是否还有其他的配置方式呢
其实是有的而且还不少打开官方文档中对应的内容就可以查看配置读取的优先顺序。
地址奉上
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config 我们可以看到居然有14种配置的位置而我们现在使用的是这里面的2个。
第3条Config data说的就是使用配置文件第11条Command line arguments说的就是使用命令行临时参数。
而这14种配置的顺序就是SpringBoot加载配置的顺序言外之意命令行临时属性比配置文件的加载优先级高
所以这个列表上面的优先级低下面的优先级高。
其实这个东西不用背的你就记得一点你最终要什么效果你自己是知道的不管这个顺序是怎么个高低排
序开发时一定要配置成你要的顺序为准。
这个顺序只是在你想不明白问题的时候帮助你分析罢了。 比如你现在加载了一个user.name属性。
结果你发现出来的结果和你想的不一样那肯定是别的优先级比你高的属性覆盖你的配置属性了
那你就可以看着这个顺序挨个排查。
哪个位置有可能覆盖了你的属性。
有时时候我们经常出现属性被覆盖的问题就是这个原因造成的。 在yaml中配置了user.name属性值然后读取出来的时候居然不是自己的配置值
因为在系统属性中有一个属性叫做user.name两个相互冲突了。
而系统属性的加载优先顺序在上面这个列表中是5号高于3号所以SpringBoot最终会加载系统配置属性
user.name。
3. 知识小结
使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性临时属性添加方式java –jar 工程名.jar –-属性名值多个临时属性之间使用空格分隔临时属性必须是当前boot工程支持的属性否则设置无效
二、开发环境中使用临时属性
1. 如何操作
临时使用目前是有了但是上线的时候通过命令行输入的临时属性必须是正确的啊
那这些属性配置值我们必须在开发环境中测试好才行。
下面说一下开发环境中如何使用临时属性其实就是Idea界面下如何操作了。 打开SpringBoot引导类的运行界面在里面找到配置项。
其中Program arguments对应的位置就是添加临时属性的可以加几个试试效果。 做到这里其实可以产生一个思考了我们运行main方法的时候
如果想使用main方法的参数也就是下面的args参数就是在上面这个位置添加的参数。
public static void main(String[] args) {
} 原来是这样通过这个args就可以获取到参数。再来看我们的引导类是如何书写的
public static void main(String[] args) {SpringApplication.run(SSMPApplication.class,args);
} 这个args参数居然传递给了run方法看来在Idea中配置的临时参数就是通过这个位置传递到我们的程序中的。
言外之意这里如果不用这个args是不是就断开了外部传递临时属性的入口呢
是这样的我们可以使用下面的调用方式这样外部临时属性就无法进入到SpringBoot程序中了。
public static void main(String[] args) {SpringApplication.run(SSMPApplication.class);
} 或者还可以使用如下格式来玩这个操作就是将配置不写在配置文件中直接写成一个字符串数组传递给程序入口。
当然这种做法并没有什么实际开发意义。
public static void main(String[] args) {String[] arg new String[1];arg[0] --server.port8082;SpringApplication.run(SSMPApplication.class, arg);
}
2. 知识小结
启动SpringBoot程序时可以选择是否使用命令行属性为SpringBoot程序传递启动属性
3. 思考
现在使用临时属性可以在启动项目前临时更改配置了但是新的问题又出来了。
临时属性好用是好用就是写的多了会很麻烦。
比如我现在有个需求上线的时候使用临时属性配置20个值这下可麻烦了能不能搞得简单点集中管理一下
呢比如说搞个文件加载指定文件还真可以。怎么做呢下面将会讲解。、
三、配置文件分类
1. 简介
SpringBoot提供了配置文件和临时属性的方式来对程序进行配置。
前面一直说的是临时属性这一节要说说配置文件了。
其实这个配置文件我们一直在使用只不过我们用的是SpringBoot提供的4级配置文件中的其中一个级别。
2. 4个级别
4个级别分别是
类路径下配置文件一直使用的是这个也就是resources目录中的application.yml文件类路径下config目录下配置文件程序包所在目录中配置文件程序包所在目录中config目录下配置文件 上述4种文件是提供给你了4种配置文件书写的位置功能都是一样的都是做配置的。
差别就是因为位置不同产生了差异。 总体上来说4种配置文件如果都存在的话有一个优先级的问题说白了就是加入4个文件我都有
里面都有一样的配置谁生效的问题。上面4个文件的加载优先顺序为
file config/application.yml 【最高】file application.ymlclasspathconfig/application.ymlclasspathapplication.yml 【最低】
3. 为什么设计多种配置文件
一个典型的应用
场景A你作为一个开发者你做程序的时候为了方便自己写代码配置的数据库肯定是连接你自己本机的
咱们使用4这个级别也就是之前一直用的application.yml。 场景B现在项目开发到了一个阶段要联调测试了连接的数据库是测试服务器的数据库肯定要换一组配置
吧。你可以选择把你之前的文件中的内容都改了目前还不麻烦。 场景C测试完了一切OK。你继续写你的代码你发现你原来写的配置文件被改成测试服务器的内容了你要
再改回来。 现在明白了不场景B中把你的内容都改掉了你现在要重新改回来以后呢改来改去吗
解决方案很简单用上面的3这个级别的配置文件就可以快速解决这个问题再写一个配置就行了。
两个配置文件共存因为config目录中的配置加载优先级比你的高
所以配置项如果和级别4里面的内容相同就覆盖了这样是不是很简单 级别1和2什么时候使用呢
程序打包以后就要用这个级别了管你程序里面配置写的是什么
我的级别高可以轻松覆盖你就不用考虑这些配置冲突的问题了。
4. 知识小结
配置文件分为4种 项目类路径配置文件服务于开发人员本机开发与测试项目类路径config目录中配置文件服务于项目经理整体调控工程路径配置文件服务于运维人员配置涉密线上环境工程路径config目录中配置文件服务于运维经理整体调控
多层级配置文件间的属性采用叠加并覆盖的形式作用于程序
四、自定义配置文件
1. 代码位置
2. 如何自定义配置文件
之前咱们做配置使用的配置文件都是application.yml其实这个文件也是可以改名字的这样方便维护。
比如我2023年4月1日搞活动走了一组配置2023年5月1日活动取消恢复原始配置这个时候只需要重新更
换一下配置文件就可以了但是你总不能在原始配置文件上修改吧不然搞完活动以后活动的配置就留不下来
了不利于维护。 这样就需要我们自定义配置文件
3. 自定义配置文件
3.1. 两种方式
方式一使用临时属性设置配置文件名
方式一使用临时属性设置配置文件名注意仅仅是名称不要带扩展名 方式二使用临时属性设置配置文件路径
方式二使用临时属性设置配置文件路径这个是全路径名 3.2 可以设置加载多个配置文件
可以设置加载多个配置文件 使用的属性一个是spring.config.name另一个是spring.config.location这个一定要区别清楚。
3.3 温馨提示
我们现在研究的都是SpringBoot单体项目就是单服务器版本。
其实企业开发现在更多的是使用基于SpringCloud技术的多服务器项目。
这种配置方式和我们现在学习的完全不一样所有的服务器将不再设置自己的配置文件
而是通过配置中心获取配置动态加载配置信息。 为什么这样做
答案集中管理 3.4 知识小结
配置文件可以修改名称通过启动参数设定配置文件可以修改路径通过启动参数设定微服务开发中配置文件通过配置中心进行设置