Java API加载数据需要2分钟。要使用缓存吗

Java API加载数据需要2分钟。要使用缓存吗,java,spring,spring-boot,caching,redis,Java,Spring,Spring Boot,Caching,Redis,我有一个API,从LDAP加载结果需要2分钟。因此,为了解决这个问题,我使用@EnableCaching来缓存这个API的结果。但问题是,每次部署这个应用程序后,我都必须先点击这个API,这样才能缓存这个API的结果,这不是一个好的做法。 是否有一种方法可以在应用程序启动之前(比如在部署期间)命中此api。或者还有其他方法,这样我就不必在每次部署后显式地使用此api了?使用第三方缓存(例如),它运行在自己的服务器上,并且不与应用程序绑定。这样,在重新部署之间缓存将保持热状态,您就不会有此问题。有

我有一个API,从LDAP加载结果需要2分钟。因此,为了解决这个问题,我使用@EnableCaching来缓存这个API的结果。但问题是,每次部署这个应用程序后,我都必须先点击这个API,这样才能缓存这个API的结果,这不是一个好的做法。
是否有一种方法可以在应用程序启动之前(比如在部署期间)命中此api。或者还有其他方法,这样我就不必在每次部署后显式地使用此api了?

使用第三方缓存(例如),它运行在自己的服务器上,并且不与应用程序绑定。这样,在重新部署之间缓存将保持热状态,您就不会有此问题。

有关LDAP服务器的详细信息需要更多更新说明。 然而,此时只需注册一个
CommandLineRunner
@Autowire
您的服务并初始化您的缓存密钥

@Component
public class AppRunner implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(AppRunner.class);

    private final LdapRepository ldapRepository;

    public AppRunner(LdapRepository ldapRepository) {
        this.ldapRepository = ldapRepository;
    }

    @Override
    public void run(String... args) throws Exception {
        logger.info(".... Fetching Users");
        this.ldapRepository.getAllUsers();
    }

}


@Component
    public class SimpleLdapRepository implements LdapRepository {

        @Override
        @Cacheable("users")
        public List<User> getAllUsers() {
            return ... data from ldap call
    }

}
@组件
公共类AppRunner实现CommandLineRunner{
私有静态最终记录器Logger=LoggerFactory.getLogger(AppRunner.class);
私人最终存款准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金准备金;
公共报告人(LDA报告人LDA报告人){
this.ldapRepository=ldapRepository;
}
@凌驾
公共无效运行(字符串…参数)引发异常{
logger.info(“……获取用户”);
this.ldapRepository.getAllUsers();
}
}
@组成部分
公共类simpledaprepository实现了LdapRepository{
@凌驾
@可缓存(“用户”)
公共列表getAllUsers(){
从ldap调用返回…数据
}
}

没有回答这个问题。他不希望在部署后命中LDAP,他希望缓存保持热状态。@Kayaman-同意部分内容,但不同意部分内容,他提出了“在应用程序启动之前,比如在部署期间,可以通过哪些方式命中此api”的问题