Spring Cacheable的问题 - 不注入服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cacheable的问题 - 不注入服务相关的知识,希望对你有一定的参考价值。

我正在使用最新版本的spring并使用缓存概念。我的(其余)服务类似乎没有注入缓存注释。如果我删除它们它完美地工作但是我不使用不是我想要的缓存。

应用:

@SpringBootApplication
@EnableCaching
public class MyApplication{

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @Bean
    public CacheManager cacheManager() {
        SimpleCacheManager cacheManager = new SimpleCacheManager();
        cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("MyCache")));
        return cacheManager;
    }

服务:

@CacheConfig(cacheNames = "MyCache")
@Service
public class MyServiceImpl implements MyService {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    private final String errormessage = "Error getting books";
    @Autowired
    private UserRepositoryCrud userRepository;

    public MyServiceImpl () {

    }

    @Override
    @Cacheable(value = "MyCache", key = "#description", unless = "#result?.size() > 0")
    public final List<Books> getBooks(String description) {
        logger.debug("Starting getBooksService");
        //service implementation ...

(我还有一个只调用此服务的Restcontroler)当调用此方法getBooks时,我在记录器上得到了一个nullpointer,但是在调试时我意识到一切都是null,即使是errormessage字符串......如果我删除@Cacheable注释,它然后工作,但我没有缓存工作,这不是我想要的。

你知道什么是错的吗?

非常感谢,

答案

伙计们我发现了这个问题...因为这个方法是最终的!我花了很多时间才发现这个!

以上是关于Spring Cacheable的问题 - 不注入服务的主要内容,如果未能解决你的问题,请参考以下文章

使用@Cacheable 踩过的坑

项目配置shiro原缓存注解失效

Spring Cacheable 注解不缓存null值

spring boot cacheable在啥情况下不生效

使用 spring webflux 替代 @Cacheable

如何让 Spring @Cacheable 在 AspectJ 方面工作?