springboot项目快速启动(Windows版)
1.对SpringBoot项目打包(执行Maven构建指令package)
mvn package
2.运行项目(执行启动指令)
java -jar 项目名.jar
注意:jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
命令行启动常见问题及解决方案
Windonws端口被占用
# 查询端口
netstat -ano
# 查询指定端口
netstat -ano |findstr "端口号"
# 根据进程PID查询进程名称
tasklist |findstr "进程PID号"
# 根据PID杀死任务
taskkill /F /PID "进程PID号"
# 根据进程名称杀死任务
taskkill -f -t -im "进程名称"
临时属性设置
带属性数启动springboot
java –jar 包名.jar –-server.port=8080
携带多个属性启动springboot,属性间使用空格分隔;临时属性必须是当前boot工程支持的属性,否则设置无效。
配置文件分类
- SpringBoot中4级配置文件:(多层级配置文件间的属性采用叠加并覆盖的形式作用于程序)
1级: file :config/application.yml 【最高】
2级: file :application.yml
3级:classpath:config/application.yml
4级:classpath:application.yml 【最低】
第三级有A,C(端口号是81),第四级有B,C(端口号是80),那么运行后的结果是A,B,C(端口号是81)。
第四级(项目类路径配置文件):服务于开发人员本机开发与测试
server:
port: 80
#配置数据源
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
username: root
password: root
#配置MyBatisPlus对应的基础配置,id生成策略使用数据库自增策略
#mybatis-plus:
# global-config:
# db-config:
# table-prefix: tbl_
# id-type: auto
#
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
第三级(项目类路径config目录中配置文件):服务于项目经理整体调控
server:
port: 81
#配置数据源
#spring:
# datasource:
# druid:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
# username: root
# password: root
#配置MyBatisPlus对应的基础配置,id生成策略使用数据库自增策略
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
id-type: auto
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
运行结果是端口号为81.
第二级(工程路径配置文件):服务于运维人员配置涉密线上环境
server:
port: 82
运行结果是端口号为82.
第一级(工程路径config目录中配置文件):服务于运维经理整体调控
server:
port: 8888
运行结果是端口号为8888.
自定义配置文件
1.通过启动参数加载配置文件(无需书写配置文件拓展名)
启动后端口号是84。
2.通过启动参数加载指定文件路径下的配置文件
3.通过启动参数加载指定文件路径下的配置文件时可以加载多个配置
ebank-server.yml中只有一个参数就是端口号是85,运行后端口号为85。
即加载多个配置,最终执行最后一个配置(覆盖思想,执行最后一个)。
多环境开发多配置文件格式
主配置文件application.yml
spring:
profiles:
active: dev #使用开发环境的配置文件
开发环境的配置文件application-dev.yml
server:
port: 81
测试环境的配置文件application-test.yml
server:
port: 82
上线环境的配置文件application-pro.yml
server:
port: 80
多环境开发分组管理配置文件
根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下:
application-devDB.yml,application-devMVC.yml等等。
使用group属性在激活指定环境的情况下,定义多种主环境与子环境的包含关系,多个环境间使用逗号分隔。
主配置文件application.yml
spring:
profiles:
active: dev
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
"test": testDB,testMVC
application-dev.yml
server:
port: 80
aplication-devDB.yml
#数据库连接的配置
server:
port: 81
aplication-devMVC.yml
server:
servlet:
context-path: /admin
port: 82
group属性中运行加载配置文件的顺序是dev—>devDB—>devMVC.
当主环境dev与其他环境有相同属性时,主环境属性生效;当住环境dev没有,其他环境中有相同属性时,最后加载的环境属性生效。先加载主启动的环境dev中的配置,再根据active加载主配置文件application.yml中group对应的顺序(devDB->devMVC),。其实还是覆盖思想,相同的属性,后面的把前面的配置给覆盖了。
多环境开发控制
当maven和springboot同时对项目进行多环境开发配置时,
pom.xml
<profiles>
//开发环境
<profile>
<id>dev_env</id>
<properties>
<profile.active>dev</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault> //默认执行该环境
</activation>
</profile>
//上线环境
<profile>
<id>pro_env</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
//测试环境
<profile>
<id>test_env</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
在springboot中引用maven属性,application.yml
spring:
profiles:
active: @profile.active@
这里的@profile.active@就是指的是pom.xml 中的**<profile.active>dev</profile.active>**
总结:1.当Maven与SpringBoot同时对多环境进行控制时,以Mavn为主,SpringBoot使用@…@占位符读取Maven对应的配置属性值。
2. 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效。
日志基础操作
添加日志记录操作
@RestController
@RequestMapping("/books")
public class BookController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(BookController.class);
@GetMapping
public String getById(){
System.out.println("springboot is running...");
//DEBUG:程序员调试代码使用
log.debug("debug ...");
//INFO:记录运维过程数据
log.info("info ...");
//WARN:记录运维过程报警数据
log.warn("warn ...");
//ERROR:记录错误堆栈信息
log.error("error ...");
return "springboot is running...";
}
}
设置日志输出级别
# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
level:
root: debug
设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别
logging:
# 设置日志组
group:
# 自定义组名,设置当前组中所包含的包
ebank: com.itheima.controller
level:
root: warn
# 为对应组设置日志级别
ebank: debug
# 为对包设置日志级别
#com.itheima.controller: debug
优化日志对象创建代码
@Slf4j
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("springboot is running...");
log.debug("debug info...");
log.info("info info...");
log.warn("warn info...");
log.error("error info...");
return "springboot is running...";
}
}
日志输出格式控制
设置日志输出格式
logging:
pattern:
console: "%d - %m%n"
%d:日期
%m:消息
%n:换行
logging:
pattern:
console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
例如:
2022-10-18 17:28:23,942 INFO --- [ main] com.itheima.Application : Started Application in 1.897 seconds (JVM running for 3.184)
%d %clr(%p) %16t %-40.40c
%d : 时间
%5p:p是日志级别,占5个字符
%clr:是显示日志级别的颜色
%16t:16位的占位符
%-40.40c: .40c是内容长度, -40是右对齐
%m:输出日志信息
%n:换行
logging:
pattern:
console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
日志文件
logging:
file:
name: server.log
logback:
rollingpolicy:
max-file-size: 3KB
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log