春季延迟加载@EnableCaching类

时间:2018-06-22 10:36:56

标签: java spring spring-data lazy-loading spring-annotations

即使我的Redis缓存未启动,我也希望启动Spring Boot服务器。

我正在使用@EnableCaching批注,但是如果redis拒绝给我BeanCreationException,则服务器启动失败。因为BeanCreationException无法处理,所以我唯一的选择是延迟加载@EnableCaching类。

我尝试注释该类,如下所示:

@Configuration
@EnableCaching
@Lazy
@Profile("dev")
public class RedisCache extends CachingConfigurerSupport {}

但是仍然在服务器启动时加载了该bean,因此启动失败。

我如何延迟加载上述课程

1 个答案:

答案 0 :(得分:0)

据我所知,Spring配置是在应用程序启动时加载的,因为那是在创建ApplicationContext的时候。

为了执行您想做的事情,您将必须创建某种形式的ApplicationContext的自定义实现(尽管老实说,我无法考虑它在依赖项注入的依赖项解析方面应该如何工作)或创建用于缓存哪些内容的自定义包装器在使用缓存之前,不会尝试建立与Redis的连接。

还可以配置Spring Boot跳过此特定的@Configuration类(Using Boot configuration classes),然后手动创建AnnotationConfigApplicationContext,然后手动从此上下文中检索Redis连接Bean,而不是自动装配它们