SpringBoot
URL
date
Nov 29, 2022
slug
springboot
status
Published
tags
Springboot
summary
SpringBoot
type
Post
mac启动springboot项目很慢的解决SpringBoot Jpa 使用 @DynamicInsert 和 @DynamicUpdate@DynamicInsert@DynamicUpdate压缩图片pdf 拼接和涂鸦SpringBoot打包后找不到resource下的文件(png,ttf等)knife4j 用nginx代理后导致v3/api-docs/default 没有拼接代理路径maven父子项目,打成多个docker image方案1:dockerfile + compose 独立运行方案2: 使用runner 用docker 原生命令
mac启动springboot项目很慢的解决
在macOs系统下
启动项目很慢,会有这个信息输出在控制台中:
大意是主机名地址解析花了5秒多,请检查你的网络配置(macos的机器名可能需要加入/etc/hosts中)。
解决方案:
在mac的命令终端执行以下命令:
SpringBoot Jpa 使用 @DynamicInsert 和 @DynamicUpdate
首先这两个注解是使用在jpa的实体上的,而不是在字段上
@DynamicInsert
设置
value
为true
,表示insert
对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert
语句当中,默认value
为true
@DynamicUpdate
设置
value
为true
,表示update对象的时候,生成动态的update语句,只更新在jpa
上下文操作变化的字段;也就是它在更新时,会检查在jpa的当前Session上下文中的对象与需要更新的对象数据是否一致,也就是说会确认数据有没有变化,只会更新有变化的字段,而不是只更新不为null的字段;
压缩图片
Github 地址:https://github.com/Curzibn/Luban
pdf 拼接和涂鸦
pdfbox
SpringBoot打包后找不到resource下的文件(png,ttf等)
使用方式
更正后,使用
hutool
这个位置只能使用inputStream
可以自己copy出一个文件来使用knife4j 用nginx代理后导致v3/api-docs/default 没有拼接代理路径
背景:springboot2.7集成了knife4j
打包部署到服务器后,用了端口代理,nginx 监听端口是8900,Java服务端口是8901,
nginx配置详情如下,在location中加入了
proxy_set_header X-Forwarded-Prefix
在springboot加入配置
server.use-forward-headers=true
或者 server.forward-headers-strategy=framework
参考:https://springdoc.org/#how-can-i-deploy-springdoc-openapi-starter-webmvc-ui-behind-a-reverse-proxy
maven父子项目,打成多个docker image
方案1:dockerfile + compose 独立运行
优点: 通用性高
缺点:
- 无法使用.m2缓存
- image会有缓存,还没找到具体原因(甚至会撑爆硬盘)
- 打包相对较慢
Dockerfile
docker-compose.yml,注意nginx挂载的路径问题,如果是docker 安装的gitlab runner,用socket文件远程调用docker,就需要考虑挂载路径要放到宿主机上,放到项目中的话,nginx.conf会出现找不到的情况
gitlab-ci.yml
方案2: 使用runner 用docker 原生命令
nginx代理这个如果不需要可以忽略,如果用到话,需要用host模式或者docker 专有网络 dns || docker appname 的方式
此方案大多数机遇gitlab-ci.yml
优点:
- 可以根据文件变动来更新具体服务
- 打包速度更快,可以利用.m2缓存
缺点:
- 通用型差,每个模块下要单独放dockerfile,
- 需要用docker run的方式来维护,相对没有compose便捷