我是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的任何人都知道吗?
答案 0 :(得分:3)
看看Spring Cache documentation。列出了使用缓存注释时可用的关键字。基本上:#result
是方法的返回值,可以在某些操作中使用,例如@CachePut
。
这有意义吗?