[关闭]
@liruiyi962464 2024-09-12T18:46:08.000000Z 字数 2128 阅读 55

springboot启动后加载热点数据到Redis

代码


1.CommandLineRunner 、ApplicationRunner

你可以使用CommandLineRunner接口或ApplicationRunner接口来实现。这两个接口都可以在Spring Boot应用程序启动完成后执行自定义的逻辑。
以下是使用CommandLineRunner接口的示例代码:

  1. import org.springframework.boot.CommandLineRunner;
  2. import org.springframework.data.redis.core.RedisTemplate;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. public class RedisDataLoader implements CommandLineRunner {
  6. private final RedisTemplate<String, Object> redisTemplate;
  7. public RedisDataLoader(RedisTemplate<String, Object> redisTemplate) {
  8. this.redisTemplate = redisTemplate;
  9. }
  10. @Override
  11. public void run(String... args) throws Exception {
  12. // 在这里调用加载数据到Redis的方法
  13. loadDataToRedis();
  14. }
  15. private void loadDataToRedis() {
  16. // 在这里实现加载数据到Redis的逻辑
  17. // 使用redisTemplate操作Redis
  18. }
  19. }

在上面的示例中,RedisDataLoader类实现了CommandLineRunner接口,并重写了run()方法。在run()方法中,你可以调用loadDataToRedis()方法来加载数据到Redis。
确保在RedisDataLoader类中注入了RedisTemplate,以便与Redis进行交互。你可以使用构造函数注入或@Autowired注解进行依赖注入。
当Spring Boot应用程序启动完成后,run()方法将被调用,从而触发数据加载到Redis的逻辑。

2.ApplicationRunner接口

以下是使用ApplicationListener接口的示例代码:

  1. import org.springframework.boot.context.event.ApplicationReadyEvent;
  2. import org.springframework.context.ApplicationListener;
  3. import org.springframework.data.redis.core.RedisTemplate;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. @Order(1)//监听器执行顺序,越小优先级越高
  7. public class RedisDataLoader implements ApplicationListener<ApplicationReadyEvent> {
  8. private final RedisTemplate<String, Object> redisTemplate;
  9. public RedisDataLoader(RedisTemplate<String, Object> redisTemplate) {
  10. this.redisTemplate = redisTemplate;
  11. }
  12. @Override
  13. public void onApplicationEvent(ApplicationReadyEvent event) {
  14. // 在这里调用加载数据到Redis的方法
  15. loadDataToRedis();
  16. }
  17. private void loadDataToRedis() {
  18. // 在这里实现加载数据到Redis的逻辑
  19. // 使用redisTemplate操作Redis
  20. }
  21. }

在上面的示例中,RedisDataLoader类实现了ApplicationListener接口,并重写了onApplicationEvent()方法。在onApplicationEvent()方法中,你可以调用loadDataToRedis()方法来加载数据到Redis。
确保在RedisDataLoader类中注入了RedisTemplate,以便与Redis进行交互。你可以使用构造函数注入或@Autowired注解进行依赖注入。
当应用程序启动完成时,ApplicationReadyEvent事件将被触发,从而调用onApplicationEvent()方法,进而触发数据加载到Redis的逻辑。
使用监听器接口的好处是,你可以选择不同的事件来触发加载数据到Redis的逻辑。在上述示例中,我们使用了ApplicationReadyEvent事件,表示应用程序已经准备好接收请求,可以开始加载数据到Redis。
请注意,如果你在应用程序中使用了多个监听器接口,你需要确保它们的执行顺序符合你的需求。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注