SpringBoot

date
Nov 29, 2022
slug
springboot
status
Published
tags
Springboot
summary
SpringBoot
type
Post

mac启动springboot项目很慢的解决

在macOs系统下 启动项目很慢,会有这个信息输出在控制台中:
大意是主机名地址解析花了5秒多,请检查你的网络配置(macos的机器名可能需要加入/etc/hosts中)。
解决方案:
在mac的命令终端执行以下命令:

SpringBoot Jpa 使用 @DynamicInsert 和 @DynamicUpdate

首先这两个注解是使用在jpa的实体上的,而不是在字段上

@DynamicInsert

设置valuetrue,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中,默认valuetrue
 

@DynamicUpdate

设置valuetrue,表示update对象的时候,生成动态的update语句,只更新在jpa上下文操作变化的字段;
也就是它在更新时,会检查在jpa的当前Session上下文中的对象与需要更新的对象数据是否一致,也就是说会确认数据有没有变化,只会更新有变化的字段,而不是只更新不为null的字段;
 

压缩图片

 

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
 
 

maven父子项目,打成多个docker image

 

方案1:dockerfile + compose 独立运行

优点: 通用性高
缺点:
  1. 无法使用.m2缓存
  1. image会有缓存,还没找到具体原因(甚至会撑爆硬盘)
  1. 打包相对较慢
 
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
优点:
  1. 可以根据文件变动来更新具体服务
  1. 打包速度更快,可以利用.m2缓存
缺点:
  1. 通用型差,每个模块下要单独放dockerfile,
  1. 需要用docker run的方式来维护,相对没有compose便捷
 
 
 
 
 

© Wang Jiahao 2021 - 2024