目录
1. EventListener
1.1 使用场景
EventListener是一种事件驱动编程,这是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式;为的就是业务系统逻辑的解耦,提高可扩展性以及可维护性。
事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已,用过Kafka的同学应该很容易理解这个。
1.2 配置
1) 新建UserInfoEvent。
public class UserInfoEvent extends ApplicationEvent {
private String data;
public UserInfoEvent(Object source, String data) {
super(source);
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
2) 新建一个UserInfoListener。
@Component
public class UserInfoListener {
@EventListener
public void handleDemoEvent(UserInfoEvent event) {
System.out.println("UserInfoEvent: "+ event.getData());
}
}
3) 通过ConfigurableApplicationContext来publish event。
public class SpringbootApplication {
public static void main( String[] args )
{
ConfigurableApplicationContext context = SpringApplication.run(SpringbootApplication.class, args);
context.publishEvent(new UserInfoEvent(context, "test"));
}
}
1.3 测试

2. Jasypt
2.1 使用场景
Jasypt用于application.properties里秘钥加密配置,可以很简便地加密明文密码。
2.2 配置
1) 添加pom依赖。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2) 新建一个CodeGeneratorUtil生成秘钥。
public class CodeGeneratorUtil {
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword("bas");
String userName = textEncryptor.encrypt("root");
String passWord = textEncryptor.encrypt("123456");
System.out.println("userName:" + userName);
System.out.println("passWord:" + passWord);
}
}

如图,加密后password是EXb/xCyjqcTuBV6r/Csb8A==
3) application.properties加上下面的配置。
jasypt.encryptor.password=bas
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
spring.datasource.password=ENC(EXb/xCyjqcTuBV6r/Csb8A==)
注:ENC()里面的code就是加密后的秘钥。
4) 启动类加上配置@EnableEncryptableProperties。
2.3 测试
通过上一步的配置能够正常启动app就说明加密成功了。

附:
1) 关于Jasypt的解密和其他用法可以参考:jasypt-spring-boot-starter实现加解密和数据返显
2) 如果需要源码可以访问:BAStriver / springboot-test

本文介绍了Spring中的EventListener如何实现事件驱动编程,通过一个简单的例子展示了事件发布和监听的配置。同时,详细讲解了Jasypt在Spring Boot中用于加密配置的使用场景,包括添加依赖、生成秘钥、配置加密属性以及启动类的设置,确保应用能够正常启动。
764

被折叠的 条评论
为什么被折叠?



