alibaba / jetcache

JetCache is a Java cache framework.
Apache License 2.0
5.09k stars 1.05k forks source link

在Spring环境下,是否可以通过@Configuration、@Bean的方式让Cache对象交由Spring管理。 #790

Closed Kagenui-yozuru closed 1 year ago

Kagenui-yozuru commented 1 year ago

我看samples中是通过生命周期函数和CacheManager来创建/获取 Cache对象的,但是需要在每一个类中写同样的方法我觉得有些繁琐。所以想要通过通用的方式来管理Cache对象。如下

@Configuration
public class JetCacheConfig {
    @Autowired
    private CacheManager cacheManager;

    @Bean(name=RedisConstant.LOGIN_USER_CACHE_NAME)
    public Cache<Integer, LoginUser> loginUserCache() {
        QuickConfig config = QuickConfig.newBuilder(RedisConstant.LOGIN_USER_CACHE_NAME)
                .expire(Duration.ofDays(RedisConstant.LOGIN_USER_CACHE_EXPIRE))
                .cacheType(CacheType.REMOTE)
                .build();
        return cacheManager.getOrCreateCache(config);
    }

    @Bean(name=RedisConstant.GATEWAY_HEADER_TOKEN_CACHE_NAME)
    public Cache<String,String> gatewayHeaderTokenCache(){
        QuickConfig config = QuickConfig.newBuilder(RedisConstant.GATEWAY_HEADER_TOKEN_CACHE_NAME)
                .expire(Duration.ofSeconds(RedisConstant.GATEWAY_HEADER_TOKEN_CACHE_EXPIRE))
                .cacheType(CacheType.REMOTE)
                .build();
        return cacheManager.getOrCreateCache(config);
    }
}

这种方式我目前尝试的结果是不可行的。在其他Bean中尝试注入Cache对象时会提示未找到该类型的Bean。请问是设计本身不支持这种方式还是我其他地方出了问题。

Kagenui-yozuru commented 1 year ago

我犯病了,注入的时候bean名称搞错了