本期项目概览:
- NeutrinoProxy:内网穿透神器
- Binlog4j:轻量级 Binlog 客户端
- Stirling-PDF:PDF 工具箱
- jasypt-spring-boot:Spring Boot 的 Jasypt 集成
- wms-ruoyi:基于若依的 wms 仓库管理系统
NeutrinoProxy:内网穿透神器
项目介绍:
- 一款基于 Netty + Solon + MybatisPlus 的内网穿透神器,可以用于本地开发调试第三方回调、将本地服务映射到外网、本地开发异地接口连调等场景。
- 支持流量监控、Docker 一键部署、SSL 加密、多种协议。
- 遵循 MIT 许可,可以用于任何个人或商业行为。
效果展示:
管理后台首页
系统管理
端口映射
本地原生启动
相关地址:
- 项目地址:https://gitee.com/dromara/neutrino-proxy
- 官网:https://neutrino-proxy.dromara.org
Binlog4j:轻量级 Binlog 客户端
项目介绍:
- 轻量级 MySQL Binlog 客户端,支持监听各种 binlog 事件,支持集群模式。
- 为了防止宕机期间的数据丢失,使用 Redis 保存 binlog 消费记录, 从而在下次启动时实现续读。
使用效果:
对于传统项目,可以使用下面的依赖:
<dependency>
<groupId>com.gitee.Jmysy</groupId>
<artifactId>binlog4j-core</artifactId>
<version>latest.version</version>
</dependency>
通过 BinlogClient 创建 binlog 客户端,配置数据库的连接信息并注册 IBinlogEventHandler 负责监听各种 binlog 事件。
public class BootStrap {
public static void main(String[] args) {
BinlogClientConfig clientConfig = new BinlogClientConfig();
clientConfig.setHost("127.0.0.1");
clientConfig.setPort(3306);
clientConfig.setUsername("root");
clientConfig.setPassword("taoren@123");
clientConfig.setServerId(1990);
IBinlogClient binlogClient = new BinlogClient(clientConfig);
binlogClient.registerEventHandler(new IBinlogEventHandler() {
@Override
public void onInsert(BinlogEvent event) {
System.out.println("插入数据:{}", event.getData());
}
@Override
public void onUpdate(BinlogEvent event) {
System.out.println("修改数据:{}", event.getData());
}
@Override
public void onDelete(BinlogEvent event) {
System.out.println("删除数据:{}", event.getData());
}
// 判定当前 handler 是否需要被执行, 你可以用过 BinlogEvent 获取到 database 和 table 判定依据
@Override
public boolean isHandle(String database, String table) {
return database.equals("pear-admin") && table.equals("sys_user");
}
});
binlogClient.connect();
}
}
对于 Spring Boot 项目,可以使用下面的依赖:
<dependency>
<groupId>com.gitee.Jmysy</groupId>
<artifactId>binlog4j-spring-boot-starter</artifactId>
<version>latest.version</version>
</dependency>
数据库连接信息可以在 application.yml / application.properties中进行配置:
spring:
binlog4j:
redis-config:
host: 127.0.0.1
port: 6379
password: taoren@123
client-configs:
master:
username: root
password: taoren@123
host: 127.0.0.1
port: 3306
serverId: 1990
slave:
username: root
password: taoren@123
host: 127.0.0.1
port: 3307
serverId: 1991
Spring Boot 项目中通过@BinlogSubscriber 注解指定 handler 绑定的客户端。
@BinlogSubscriber(clientName = "master")
public class UserEventHandler implements IBinlogEventHandler<User> {
@Override
public void onInsert(BinlogEvent<User> event) {
System.out.println("插入数据:" + event.getData());
}
@Override
public void onUpdate(BinlogEvent<User> event) {
System.out.println("修改数据:" + event.getData());
}
@Override
public void onDelete(BinlogEvent<User> event) {
System.out.println("删除数据:" + event.getData());
}
@Override
public boolean isHandle(String database, String table) {
return database.equals("pear-admin") && table.equals("sys_user");
}
}
相关地址:
- 项目地址:https://gitee.com/dromara/binlog4j
Stirling-PDF:PDF 工具箱
项目介绍:
- 基于 Docker,支持本地托管的 Web 端的 PDF 工具箱,允许对 PDF 文件执行各种操作,例如拆分合并、转换、添加图像、旋转、压缩、添加和删除密码、检测并删除空白页等。
- 这个项目最初是 100% ChatGPT 制作的,后面才慢慢发展,功能逐渐完善。
技术栈:Spring Boot + Thymeleaf + PDFBox + LibreOffice + OcrMyPdf
效果展示:
首页:
首页
压缩:
PDF压缩
PDF 转图片:
PDF转图片
转图片后的效果
相关地址:
- 项目地址:https://github.com/Frooodle/Stirling-PDF
- 在线体验:https://pdf.adminforge.de/
jasypt-spring-boot:Spring Boot 的 Jasypt 集成
项目介绍:
- Jasypt(Java Simplified Encryption)是一个简单易用的开源的 Java 加密库,支持多种加密算法,用于简化应用程序中的数据加密和解密操作。
- Jasypt 可以很方便地与 SpringBoot 应用结合,jasypt-spring-boot 就是 Spring Boot 2.x 和 3.0.0 的集成。
使用效果(这里以加密数据库参数为例展示):
引入依赖:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
application.yml中指定加密算法、秘钥、前缀以及后缀等:
jasypt:
encryptor:
algorithm: PBEWithMD5AndDES # 配置加密算法
password: 123456 # 推荐使用JVM参数
iv-generator-classname: org.jasypt.iv.NoIvGenerator
property:
prefix: SUNS(
suffix: )
测试:
@SpringBootTest
class JasyptDemoApplicationTests {
@Resource
private StringEncryptor stringEncryptor;
@Test
void testGenerate() {
String url = "jdbc:mysql://localhost:3306/suns";
String username = "root";
String password = "123456";
String urlSecret = this.stringEncryptor.encrypt(url);
String usernameSecret = this.stringEncryptor.encrypt(username);
String passwordSecret = this.stringEncryptor.encrypt(password);
System.out.println("url为:" + url + ",加密后为" + urlSecret);
System.out.println("username为:" + username + ",加密后为" + usernameSecret);
System.out.println("password为:" + password + ",加密后为" + passwordSecret);
}
}
获取加密后的结果并填充到application.yml中:
spring:
application:
name: JASYPT-DEMO
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: SUNS(dBQZmnmLCIlF7jXaKnlJlvxRiRxYUGQp+yx989jFIM7apyLTXMNxQYoNZdowCC6P) # 使用密文,注意使用IT()包裹起来
username: SUNS(NLQETcOTnMhO32Ay6/J0wQ==)
password: SUNS(6KTh0+ejC43aZzVwc8xfxw==)
详细使用请参考这篇文章:SpringBoot 使用 Jasypt 对敏感信息进行脱敏处理。
相关地址:
- 项目地址:https://github.com/ulisesbocchio/jasypt-spring-boot
- Demo 地址:https://github.com/ulisesbocchio/jasypt-spring-boot-samples/tree/master/jasypt-spring-boot-demo
wms-ruoyi:基于若依的 wms 仓库管理系统
项目介绍:
- 从项目名称就可以看出来,这是一套基于若依的 wms 仓库管理系统,支持仓库基础数据维护、入库、出库、库存看板等功能。
- 个人及企业免费使用,完全开源。
技术栈:
- 前端:Vue+Element UI(ant design 正在开发中)
- 后端:Spring Boot + Spring Security + Jwt + MySQL + Redis
效果展示:
演示地址:http://wms.ichengle.top
库存看板:
库存看板
入库:
入库
相关地址:
- 项目地址:https://github.com/zccbbg/wms-ruoyi
- B 站视频介绍:https://www.bilibili.com/video/BV1ys4y1q7uG/