springboot项目启动时加载数据

本文介绍了如何在Spring Boot项目启动时加载数据,通过实现CommandLineRunner接口并在run方法中实现具体业务。示例代码展示了一个启动时检查Redis缓存并根据需要创建和存储图像列表的场景。

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

实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 
为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。

很简单,只需要一个类就可以,无需其他配置。 

创建实现接口 CommandLineRunner 的类

@Component
public class StartupLoading implements
CommandLineRunner{

   @Autowired
   private RedisService redisService;
   private static SecureRandom ran = new SecureRandom();
   private static Logger logger = Logger.getLogger(Application.class);
   @Value("${img.temp.path}")
   private String imgTempPath;
   @Value("${img.temp.source}")
   private String imgSourcePath;
   
   @Override
   public void run(String... var1) throws Exception{
    logger.info("picture creation program start...");
    //如果不存在缓存数据
    if(!redisService.exists("imageList")){
    List<ImageAttributes> imageList = CommonMethodUtil.createImgList(imgSourcePath, imgTempPath);
    //维护图像属性的list放缓存
    redisService.putObject("imageList", imageList,600000L);
    }
logger.info("picture creation program end...");
    }

}

Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例并运行它们的run方法。也可以利用@Order注解(或者实现Order接口)来规定所有CommandLineRunner实例的运行顺序。@Order(value=1)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值