springboot 项目启动后-立刻执行自定义逻辑
实现方式
- 新建一个ApplicationRunnerConfig类实现ApplicationRunner类
- 并重写run方法,并在类上加上**@Component**注解。
- 该注解用于将一个类标记为Spring的组件(Component)。被@Component注解标记的类将被Spring自动扫描并注册为bean,使其可以被Spring容器管理和使用。
- 具体来说,当使用@Component注解标记一个类时,Spring会自动将其实例化,并将其作为bean注册到应用程序的上下文(ApplicationContext)中。
下方为具体的示例代码。
@Component
@Slf4j
public class ApplicationRunnerConfig implements ApplicationRunner {
@Autowired
private RedisCache redisCache;
/**
* 在项目启动后,将对应的key下边的值都变为 false
*/
@Override
public void run(ApplicationArguments args) throws Exception {
Collection<String> keys = redisCache.keys(CloudConstants.IS_CONTINUE + "*");
log.info("记录是否同步这个表单的名称是:{}", JSONObject.toJSONString(keys));
for (String key : keys) {
log.info("键名:{}", key);
Boolean cacheObject = (Boolean) redisCache.getCacheObject(key);
log.info("值:{}", cacheObject);
if (cacheObject) {
log.info("如果是true,则改为false");
redisCache.setCacheObject(key, false);
}
}
}
}
上述代码主要是将redis中某一key下方的所有key对应的value,如果是true的话改为false。
具体实现逻辑可以自己自定义。
ApplicationRunner实现解释
- 在应用程序启动过程中,Spring Boot会创建一个SpringApplication实例,并调用其run方法。
- SpringApplication在启动过程中会触发多个事件,其中包括ApplicationStartingEvent、ApplicationEnvironmentPreparedEvent等。
- 当Spring Boot触发ApplicationStartedEvent事件时,会调用SpringApplicationRunListeners中的相应方法。
- SpringApplicationRunListeners中的方法会调用ApplicationRunner接口的实现类的run方法。
- ApplicationRunner接口的实现类中的run方法会在应用程序启动后被执行,可以在其中编写自定义的初始化逻辑。