如何解释以下Spring EL

时间:2016-01-06 16:18:30

标签: java spring spring-cache

我是Spring Framework的新手,并试图学习它。所以我找到了一些很好的视频教程,解释了我发现哪些是好的。

有一部分我无法理解,但我认为它与Spring EL有关,他在Spring中与缓存注释一起使用。

这是我观看过的video

这是我想知道的代码的一部分。

    @Override
    @Transactional(
            propagation = Propagation.REQUIRED,
            readOnly = false)
    @CachePut(
            value = "greetings",
            key = "#result.id")
    public Greeting create(Greeting greeting) {
        logger.info("> create");

        if (greeting.getId() != null) {
            logger.error(
                    "Attempted to create a Greeting, but id attribute was not null.");
            throw new EntityExistsException(
                    "The id attribute must be null to persist a new entity.");
        }

        Greeting savedGreeting = greetingRepository.save(greeting);

        logger.info("< create");
        return savedGreeting;
    }

我想知道他使用注释@CachePut的部分,并将key参数分配给"#result.id"。在他解释的视频中,它与响应值的ID映射。这意味着缓存将保存savedGreeting的ID。这是对的吗?

它是如何工作的?我已经查看了documentation的Spring EL,但也找不到相关内容。 Stackoverflow的任何人都知道吗?

1 个答案:

答案 0 :(得分:3)

看看Spring Cache documentation。列出了使用缓存注释时可用的关键字。基本上:#result是方法的返回值,可以在某些操作中使用,例如@CachePut

这有意义吗?