springboot运维篇
1.临时属性
当你自己写的idea的端口是8080 但是运行在linux时候发现端口被占用时候 我们不需要重新去修改idea 里面的配置 然后再去上传到linux上面去 直接 使用临时属性
比如我要把打包好的程序启动端口改成80。
SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,可以使用临时属性的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参数就可以了。
java –jar springboot.jar –-server.port=80
总结:
多个临时属性之间使用空格分隔
开发环境中使用临时属性
打开SpringBoot引导类的运行界面,在里面找到配置项。其中Program arguments对应的位置就是添加临时属性的,可以加几个试试效果。
第二种方法就是我们main函数 里面的args 也可以进行修改
这个args 就可以接受到上面我们的临时属性
我们也可以args上面 改 因为他就是数组
public static void main(String[] args) {
String[] arg = new String[1];
arg[0] = "--server.port=8082";
SpringApplication.run(SSMPApplication.class, arg);
}
2.配置文件分类
4个级别分别是:
- 类路径下配置文件(一直使用的是这个,也就是resources目录中的application.yml文件)
- 类路径下config目录下配置文件
- 程序包所在目录中配置文件
- 程序包所在目录中config目录下配置文件
上面4个文件的加载优先顺序为:
- file :config/application.yml 【最高】
- file :application.yml
- classpath:config/application.yml
- classpath:application.yml 【最低】
总结
-
配置文件分为4种
- 项目类路径配置文件:服务于开发人员本机开发与测试
- 项目类路径config目录中配置文件:服务于项目经理整体调控
- 工程路径配置文件:服务于运维人员配置涉密线上环境
- 工程路径config目录中配置文件:服务于运维经理整体调控
-
多层级配置文件间的属性采用叠加并覆盖的形式作用于程序
3.自定义配置文件
springboot默认读取的配置application.yml的配置 当你没有application.yml配置的话就是读取不到 那么我就要使用自定义的配置文件 那要如何生效喃
自定义配置文件方式有如下两种:
方式一:使用临时属性设置配置文件名,注意仅仅是名称,不要带扩展名
![](https://images.anlemon.cn/springboot/9.png)
方式二:使用临时属性设置配置文件路径,这个是全路径名
这个classpath:/ 就是默认的resource下面的配置
![](https://images.anlemon.cn/springboot/10.png)
也可以设置加载多个配置文件
![](https://images.anlemon.cn/springboot/11.png)
使用的属性一个是spring.config.name,另一个是spring.config.location,这个一定要区别清楚。
温馨提示
总结
- 配置文件可以修改名称,通过启动参数设定
- 配置文件可以修改路径,通过启动参数设定
- 微服务开发中配置文件通过配置中心进行设置
4.多环境开发
这个就是多环境的开发 每一个环境 数据库的配置都是不一样的 ip 不一样
![](https://images.anlemon.cn/springboot/12.png)
那用哪一个呢?设置默认启动哪个就可以了
spring: # 这个就是选择启动那个配置
profiles:
active: pro # 启动pro
---
spring: # 设置每个
profiles: pro
server:
port: 80
---
spring:
profiles: dev
server:
port: 81
就这么简单,再多来一组环境也OK
其中关于环境名称定义上述格式是过时格式,标准格式如下
spring:
config:
activate:
on-profile: pro # 就是我们选择启动哪个
5.多环境开发独立配置文件书写技巧
作为程序员在搞配置的时候往往处于一种分久必合合久必分的局面。开始先写一起,后来为了方便维护就拆分。对于多环境开发也是如此,下面给大家说一下如何基于多环境开发做配置独立管理,务必掌握。
准备工作
将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
- application-devDB.yml 就以后dev+你的配置 就可以写成独立的配置 需要哪个环境就可以直接使用
- application-devRedis.yml
- application-devMVC.yml
使用
使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
spring:
profiles:
active: dev
include: devDB,devRedis,devMVC
改良
但是上面的设置也有一个问题,比如我要切换dev环境为pro时,include也要修改。因为include属性只能使用一次,这就比较麻烦了。SpringBoot从2.4版开始使用group属性替代include属性,降低了配置书写量。简单说就是我先写好,你爱用哪个用哪个。
spring:
profiles:
active: dev
group:
"dev": devDB,devRedis,devMVC
"pro": proDB,proRedis,proMVC
"test": testDB,testRedis,testMVC
6.多环境开发控制
多环境开发到这里基本上说完了,最后说一个冲突问题。就是maven和SpringBoot同时设置多环境的话怎么搞。
maven是做什么的?项目构建管理的,最终生成代码包的,SpringBoot是干什么的?简化开发的。简化,又不是其主导作用。最终还是要靠maven来管理整个工程,所以SpringBoot应该听maven的。整个确认后下面就好做了。大体思想如下:
- 先在maven环境中设置用什么具体的环境
- 在SpringBoot中读取maven设置的环境即可
maven中设置多环境(使用属性方式区分环境)
<profiles>
<profile>
<id>env_dev</id> <!--特有的id 就是不能少的 也就是我们的生产环境-->
<properties> <!--定义属性-->
<profile.active>dev</profile.active> <!--这个的优先级就会高于我们springboot里面的yml配置的 就是yml里面写的环境就不生效了 就用maven的这个环境了-->
</properties>
<activation> <!--活动-->
<activeByDefault>true</activeByDefault> <!--默认启动环境-->
</activation>
</profile>
<profile>
<id>env_pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
</profiles>
SpringBoot中读取maven设置值
spring:
profiles:
active: @profile.active@
上面的@属性名@就是读取maven中配置的属性值的语法格式。
7.日志配置
总结
- 基于lombok提供的@Slf4j注解为类快速添加日志对象
日志文件
日志信息显示,记录已经控制住了,下面就要说一下日志的转存了。日志不能仅显示在控制台上,要把日志记录到文件中,方便后期维护查阅。
对于日志文件的使用存在各种各样的策略,例如每日记录,分类记录,报警后记录等。这里主要研究日志文件如何记录。
记录日志到文件中格式非常简单,设置日志文件名即可。
在yml配置文件加上
logging:
file:
name: server.log
虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。下面给出日志文件的常用配置方式:
logging:
logback:
rollingpolicy:
max-file-size: 3KB # 个日志文件的大小 防止日志文件过大
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。
总结
- 日志记录到文件
- 日志文件格式设置