SpringBoot--运维实用
SpringBoot运维实用篇
打包与运行
windows打包
在maven中双击package打包
另外如果打包报utf-8的错,在pom中添加
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
如果报什么测试错误,你clean一下,如果还是不行自己找下其他地方有没有问题
另外项目没有target目录的话:
完成后:target目录下的这个文件就是我们打包的文件
运行打包文件:在cmd中
注意:windows有补全文件名功能,打上一个d点击tab 就能得到那个demo-0.0.。。。。
打包跳过test的方法:
打包插件
插件的作用:打包一个可以独立运行的程序,包含你的程序,程序运行的所有jar包,为了能运行加入的工具包
linux快速启动springboot
然后将打包的jar文件上传到该文件夹中
当然要确保linux中有jdk环境
在linux中连接数据库,类似
之后
之后找到ip地址和端口,在浏览器查看
防止霸屏可以后台启动:
总结:
配置高级
临时属性设置
临时更改端口:(程序已经传到服务器配置文件改不了了)
改多个属性:
临时属性必须是springboot支持的属性否则设置无效
在idea中设置临时属性:
第一种
第二种:
不带参数启动springboot可以防止外界设置临时属性降低程序得到安全性
配置覆盖(四级配置文件)
当然只覆盖新配置文件中有的属性
- 在打包jar包所在目录配置一个配置文件那么他的优先级又高于上面两者
- 在打包jar包所在目录创建一个config目录在里面添加一个配置文件,他的优先级又高于上面三者
自定义配置文件
如果我们配置文件名字不想用application,想换个其他名字需要怎么办呢?
需要设置临时属性:
方法一:
方法二:
这就把文件名改为了ebank了
设置多个配置文件:
最后一个配置文件优先级高
重要说明:
多环境开发
多环境开发就是生产、开发、测试环境不在同一台主机,而且配置文件可能也有所区别
#应用环境
#表示本处我们有profiles名字为pro的环境
spring:
profiles:
active: pro
---
#生产环境
server:
port: 81
spring:
profiles: pro
---
#测试环境
server:
port: 80
spring:
profiles: test
---
#开发环境
server:
port: 82
spring:
profiles: dev
如果不同环境的配置在不同的配置文件中:
和之前类似只不过profiles的名字就是文件名-后面的,比如application-dev.yml 的名字就是dev
多环境开发分组管理
上面优先级:dev>devMVC>devRedis>devDB
本处的dev就是下面的“dev”组,所以说本处启动的是devDB,devMVC
多环境开发控制
maven和springboot多环境兼容步骤:
日志
日志基础
- 日志作用
- 编程期调试代码
- 运营期记录信息
- 日常重要信息(峰值流量。。。)
- 报错信息(错误堆栈。。)
- 运维过程数据(扩容、报警。。)
@RestController
@RequestMapping("/books")
public class BookController {
// 创建记录日志对象
private static final Logger log = LoggerFactory.getLogger(BookController.class);
@GetMapping
public String getById(){
System.out.println("spring is running..");
log.debug("debug..");
log.info("info。。。");
log.error("error...");
log.warn("warn...");
return "springboot is running...";
}
}
启动项目打开网页后:
默认为info级别所以不显示debug,如果要显示需要设为debug级别,设置方法:配置文件中:
级别设置为warn就只有error进而warn
设置为error就只有error,因为只会显示大于等于error级别的信息
不仅可以设置根目录的日志级别还可以设置某个包的日志级别,和设置分组对某个组设置日志级别:
快速创建日志对象
导入lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
之后
@Slf4j
@RestController
@RequestMapping("/books")
public class BookController {
//// 加上@Slf4j注释就不用创建这个对象
// private static final Logger log = LoggerFactory.getLogger(BookController.class);
//
@GetMapping
public String getById(){
System.out.println("spring is running..");
log.debug("debug..");
log.info("info。。。");
log.error("error...");
log.warn("warn...");
return "springboot is running...";
}
}
日志输出格式控制
基础格式:
我们可以自己设置日志输出格式:
基础格式相当于:
文件记录日志
logging:
file:
name: server.log
logback:
rollingpolicy:
# 文件大小超过10mb就创建新文件
max-file-size: 10MB
# 设置命名格式:类似server.2020-01-01.01.log
file-name-pattern: serber.%d{yyyy-MM-dd}.%i.log
这样在本文件根目录就会出现一个叫做server.log的文件来记录日志信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构