即使我的Redis缓存未启动,我也希望启动Spring Boot服务器。
我正在使用@EnableCaching
批注,但是如果redis拒绝给我BeanCreationException
,则服务器启动失败。因为BeanCreationException
无法处理,所以我唯一的选择是延迟加载@EnableCaching
类。
我尝试注释该类,如下所示:
@Configuration
@EnableCaching
@Lazy
@Profile("dev")
public class RedisCache extends CachingConfigurerSupport {}
但是仍然在服务器启动时加载了该bean,因此启动失败。
我如何延迟加载上述课程
答案 0 :(得分:0)
据我所知,Spring配置是在应用程序启动时加载的,因为那是在创建ApplicationContext的时候。
为了执行您想做的事情,您将必须创建某种形式的ApplicationContext的自定义实现(尽管老实说,我无法考虑它在依赖项注入的依赖项解析方面应该如何工作)或创建用于缓存哪些内容的自定义包装器在使用缓存之前,不会尝试建立与Redis的连接。
还可以配置Spring Boot跳过此特定的@Configuration类(Using Boot configuration classes),然后手动创建AnnotationConfigApplicationContext,然后手动从此上下文中检索Redis连接Bean,而不是自动装配它们