专属Java面试小册/一对一提问/简历修改/求职指南/学习打卡,欢迎加入 JavaGuide 官方知识星球 (认真维护接近四年,限时优惠中)。
JavaGuide 官方网站:javaguide.cn
你好,这是 JavaGuide 的「优质 Java 开源项目推荐」第 23 期,距离上一期发布已经过去 3 个月了。8 月、9 月和10月都忘记发布了,后续还是尽量保证每月一期,每一期都会精选 5 个高质量的 Java 开源项目。
本期项目概览:
项目介绍:
效果展示:
管理后台首页
系统管理
端口映射
本地原生启动
相关地址:
项目介绍:
使用效果:
对于传统项目,可以使用下面的依赖:
<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");
}
}
相关地址:
- JavaGuide 开源版:javaguide.cn(已经维护五年,138k+ star,准备 Java 面试必备)
- JavaGuide 面试专版:《Java 面试指北 》 (质量很高,专为面试打造,配合 JavaGuide 食用)。
项目介绍:
技术栈:Spring Boot + Thymeleaf + PDFBox + LibreOffice + OcrMyPdf
效果展示:
首页:
首页压缩:
PDF压缩PDF 转图片:
PDF转图片转图片后的效果相关地址:
项目介绍:
使用效果(这里以加密数据库参数为例展示):
引入依赖:
<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 对敏感信息进行脱敏处理。
相关地址:
- JavaGuide 开源版:javaguide.cn(已经维护五年,138k+ star,准备 Java 面试必备)
- JavaGuide 面试专版:《Java 面试指北 》 (质量很高,专为面试打造,配合 JavaGuide 食用)。
项目介绍:
技术栈:
效果展示:
演示地址:http://wms.ichengle.top
库存看板:
库存看板入库:
入库相关地址:
·············· END ··············
近期文章精选: