开发遇到的问题…
1. windows端口被占用
#查询端口
netstat -ano
#查询指定端口
netstat -ano | findstr "端口号"
#根据p进程pid查询进程名称
tasklist |findstr "进程pid号"
#根据pid杀死任务
taskkill /f /pid "进程pid号"
#根据进程名称杀死任务
taskkill -f -t -im "进程名称"
2. 记录异常 没有主清单属性
原因:pom.xml中未配置spring-boot-maven-plugin
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.0</version>
</plugin>
</plugins>
</build>
原因类似于运行的 jar包中找不到主Class
3. windows CMD的输入自动补全功能
例如:
java -jar springboot_ssmp-0.0.1-SNAPSHOT.jar
其中,在输入jar包中的s之后按tab键即可自动补全后续内容
而部分用户无法使用该功能,解决方法如下:
- win+R打开运行界面
- 输入regedit,点击确定
- 查找路径 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
- 选择CompletionChar,更改数值数据为9
- 重启cmd窗口即可
4. git项目导入遇到的问题
拉入的项目代码爆红,原因是maven配置的问题。
在setting–>build,Execution,Deployment–>的MAVEN home path 中选择Bundled(Maven 3)
5. springboot项目application.yml优先级问题
- 一般开发人员:classpath: application.yml
- 项目经理:classpath: config/application.yml
- 运维人员:file: application.yml
- 最顶层:file: /config/application.yml
文件内容属于叠加并覆盖
a1b + a2c = a2bc
6. springboot多环境开发的问题
#设定启动环境
spring:
profiles:
active:pro
---
#配置开发常用环境,例如开发、生产、测试环境
spring:
profiles:pro
server:
port:80
---
spring:
profiles:dev
server:
port:81
---
spring:
profiles:test
server:
port:82
正常开发项目中,则使用以下情况:
resources/application.yml
/application-dev.yml(port:80)
/application-pro.yml(port:81)
/application-test.yml(port:82)
#在application.yml中则配置如下:
spring:
profiles:
active:dev
#则决定调用application-dev.yml
再实际的情况下,配置文件目录通常是这样的
resources/application.yml
/application-dev.yml
/application-devDB.yml
/application-devMVC.yml
则在application中:
仅仅写成
spring:
pofile:
active:dev
是不行的,因为application-devDB.yml和/application-devMVC.yml中的内容则不会生效
因此需要添加:
spring:
pofile:
active:dev
include:devMVC,devDB
ps:相同属性后添加的覆盖前添加的
ps:以上为落后的技术
新版本之后:
在application中:
spring:
pofile:
active:dev
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
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属性
spring:
profiles:
active: @profile.active@
7. 使用日志工具记录日志
debug 、info、 warn、error
logging:
#设置日志组
group:
#自定义组名,设置当前组中所包含的包
ebank: com.xxx.controller
level:
root: warn
#为对应组设置日志级别
ebank: debug
#为对应包设置日志级别
com.xxx.controller: debug
设置日志输出格式
#设置日志模板格式
pattern:
console: "%d - %m %n"
#or
console: "%d %p %n"
console: "%d %5p %n" 5代表占五个位置
8. 启动热部署
在pom.xml配置spring-boot-devtolls
再使用ctrl+F9激活热部署
自动bulid流程
- settings–>compile–>Build project automatically-
- Maintenance–>Registry–>compile.automake.allow.when.app.running
默认不出发重启的目录列表:
- /META-INF/maven
- /META-INF/resources
- /resources
- /static
- /public
- /template
可在application.yml文件中修改
高级别关闭热部署:
Applicaton.java中
System.steProperty("spring.devtolls.restart.enabled","false");
9. 配置高级
- @EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入spring容器
- @EnableConfigurationProperties与@Component不能同时使用
- @ConfigurationProperties注解的属性支持松散绑定,@Value则不支持
- 遇到问题时将@ConfigurationProperties(prefix = “abcde”)里面的属性全小写
- springboot支持JDK8提供的时间与空间计量单位,如:
@DurationUnit(ChronoUnit.MINUTES)
private Duration severTimeOut;
@DataSizeUnit(DataUnit.MEGABYTES)
private DataSize dataSize;
配置文件如下:
servers:
serverTimeOut: 3
@DataSizsUnit(DataUnit.MEGABYTES)----->MB
private DataSize datasize;
配置文件如下:
dataSize: 1024
- 启动Bean属性校验
导入JSR303与hibernate校验框架坐标
使用@Validated注解启用校验功能 是哦那个具体校验规则规范数据校验格式
10. 测试
临时属性通过properties以及args在@SpringBootTest中来进行注入
properties属性可以为当前测试用例添加临时的属性配置
args属性可以为当前测试用例参加临时的命令行参数
当同时出现时,args覆盖properties
使用@Import注解加载当前测试类专用的配置
在测试环境中进行web环境模拟测试
- 使用在SpringBootTest中使用webEnviroment属性
- 端口可设置多种
测试类中开启虚拟MVC调用
- 测试类上使用@AutoConfigureMockMvc注解
- 方法中注入虚拟MVC调用对象@AutoWired MockMvc mvc
- 创建虚拟请求,访问页面
- 执行请求