代码之家  ›  专栏  ›  技术社区  ›  Manas Saxena

spring中的Lazy load@EnableCaching类

  •  0
  • Manas Saxena  · 技术社区  · 8 年前

    我希望我的spring boot服务器能够启动,即使我的redis缓存没有启动。

    我在用 @EnableCaching 注释,但如果redis停止给我 BeanCreationException 因为 BeanCreationException 无法处理,我唯一的选择就是延迟加载 @启用缓存

    我试着在下面注释这个类:

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

    但这个bean仍然在服务器启动时被加载,因此启动失败。

    如何惰性加载上述类

    1 回复  |  直到 8 年前
        1
  •  0
  •   Konrad Botor    8 年前

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

    为了做你想做的事情,你要么创建某种自定义的ApplicationContext实现(尽管我真的不知道它在依赖注入的依赖解析方面应该如何工作),要么创建自定义的缓存包装器,在缓存被使用之前不会尝试建立与Redis的连接。

    也可以将Spring Boot配置为跳过这个特定的@Configuration类( Using Boot configuration classes )然后手动创建 AnnotationConfigApplicationContext 然后从这个上下文中手动检索Redis连接bean,而不是自动连接它们。