精尽 jasypt-spring-boot 源码分析 3.0.4

本文介绍如何使用Jasypt-Spring-Boot进行配置加密与解密,包括依赖工具安装、源码拉取及配置示例。重点讲解了项目结构、初始化过程以及调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 依赖工具

  • Maven
  • Git
  • JDK
  • IntelliJ IDEA

2 源码拉取

git clone git://github.com/ulisesbocchio/jasypt-spring-boot.git
cd jasypt-spring-boot/
# 3.0.4是最新的版本
git checkout jasypt-spring-boot-parent-3.0.4
mvn clean install

3 jasypt-spring-boot-demo

System.setProperty("jasypt.encryptor.password", "password");
application.yml中的itemConfig.password:ENC(nrmZtkF7T0kjG/VodDvBw93Ct8EgjCA+)
encrypted.properties
secret.property=ENC(nrmZtkF7T0kjG/VodDvBw93Ct8EgjCA+)

启动DemoApplication,可以看到ENC()中的值,被解密出来了
在这里插入图片描述

4 源码

4.1 项目结构

项目代码相对1.0复杂了很多,对代码进行拆分,分类
在这里插入图片描述
在这里插入图片描述

4.2 初始化

通过sprng boot spi引入配置,通过BeanFactoryPostProcessor.postProcessBeanFactory代理PropertySources。getProperty调用StringEncryptor的decrypt方法进行解密
标红的为新增的。
JasyptSpringCloudBootstrapConfiguration:与JasyptSpringBootAutoConfiguration相同代码,但是作用在SpringCloudBootstrap
EncryptablePropertyResolverConfiguration: 提供EncryptablePropertyResolver
CachingConfiguration: 提供RefreshScopeRefreshedEventListener,用于配置刷新
在这里插入图片描述
BeanFactoryPostProcessors调用序列图如下
在这里插入图片描述

4.3 调用

默认使用wrapper包装器模式。getProperty调用StringEncryptor的decrypt方法进行解密
EncryptablePropertyFilter:属性名的黑白名单过滤
EncryptablePropertyDetector: 是否加密、取出加密的值
EncryptablePropertyResolver:解析加密的property,最终调用StringEncryptor的decrypt解密
在这里插入图片描述

4.4 RefreshScopeRefreshedEventListener

默认接收下面的事件。也可以通JasyptEncryptorConfigurationProperties#refreshedEventClasses添加。

 "org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent",
 "org.springframework.cloud.context.environment.EnvironmentChangeEvent",
 "org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值