java - 如何停止 jasypt basictextencryptor 实体并在春季重新开始?
问题描述
我有一个应用程序有一些用户和用户条目,条目也有 userId 字段。当我保存一个条目时,我得到了相应用户的密钥,并想用用户密钥加密条目文本然后保存。
我将 jastpy basictextencyrptor 定义为 bean:
@Configuration
public class Encyrptor {
@Bean
public BasicTextEncryptor basicTextEncryptor() {
return new BasicTextEncryptor();
}
}
我将这个 bean 自动连接到我的服务类。这是我的服务代码:
public Entry saveEntry(Entry entry) {
String key = userService.getUserKeyByUserId(entry.getUserId());
entry.setText(encyptor(key, entry.getText()));
return entryRepository.save(entry);
}
private String encyptor(String key, String inputText) {
basicTextEncryptor.setPassword(key);
return basicTextEncryptor.encrypt(inputText);
}
每当我想保存条目时,都会调用这些方法。但是,第一次尝试很好,而在第二次尝试中,我在线出错:
basicTextEncryptor.setPassword(key);
错误是:
org.jasypt.exceptions.AlreadyInitializedException: Encryption entity already initialized
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.setPassword(StandardPBEByteEncryptor.java:298)
at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.setPassword(StandardPBEStringEncryptor.java:298)
at org.jasypt.util.text.BasicTextEncryptor.setPassword(BasicTextEncryptor.java:79)
它说这个 encyrptor 已经初始化了,那么在使用它之后我该如何停止它呢?还是在方法中创建一个新的 BasicTextEncyrptor 实例来为每次尝试创建不同的实例而不是将其定义为 bean 更好?
解决方案
推荐阅读
- mysql - 如何将本地 nodeJS 服务器与在 AWS 上运行的 MySQL 连接?
- javascript - jquery div幻灯片效果与另一个div自动调整宽度
- javascript - 如何实现对象内部插槽属性
- python - Python程序获取一个人身高的数值和单位?
- android - Splash Screen is show but next screen app crashed logcat error is shown error something like this
- amazon-web-services - Amazon DynamoDB how to read populated Database in Golang?
- angular - Image Rendering features like Zoom, Rotate image using angular 6?
- sitefinity - Sitefinity - Revision history empty when publishing dynamic content item
- php - Problems while calling python in PHP
- powershell - Extract content from log file from share location and send email in tabular format along with new headings to email