用于缓存的Spring自定义注释

时间:2013-06-13 14:42:48

标签: spring caching annotations

我使用了基于spring声明注释的缓存方法。以下是我如何使用它,

@Cacheable(value = "users", key = "T(org.mifosplatform.infrastructure.core.service.ThreadLocalContextUtil).getTenant().getName().concat(#username)")
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException, DataAccessException { //method body }

这个注释看起来很冗长。我试图使用自定义密钥生成器,但问题是当我在注释中定义一个键时,不会调用自定义密钥生成器。

所以现在我尝试使用自定义spring注释作为解决方法。但我无法找到一个好的参考开始。基本上我需要在密钥(租户标识符)中添加一个上下文感知参数。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Key必须是一个静态变量。它不能是运行时评估。 您需要覆盖CacheManager,然后进行修改。下面是我扩展HazelcastCacheManager的示例,后者又扩展了spring的Cachemanager

# requirements.txt   
my_other_package