关于Springboot的EventListener和Jasypt使用 小结

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

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

目录

 

1. EventListener

1.1 使用场景

1.2 配置

1.3 测试

2. Jasypt

2.1 使用场景

2.2 配置

2.3 测试


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值