2017-08-21 6 views
2

Est-il possible d'utiliser les champs non constants ou les propriétés de la classe actuelle dans la clé de l'annotation @CacheEvict? Par exemple:Utilisation de propriétés ou de champs non constants dans la clé pour @CacheEvict

public class Feature { 

    private int id; 

    @Autowired 
    private FeaturesClient featuresClient; 

    @CacheEvict(value = CacheConfiguration.FEATURES, key = 
       "T(java.lang.String).valueOf(#userId).concat(T(java.lang.String)" + 
       ".valueOf(**#id**))") 
    public boolean isFeatureAvailable(long userId) { 
     return featuresClient.isFeatureAvailable(userId, id); 
    } 

} 

Répondre

1

Oui.

@CacheEvict(key = "#userId + #root.target.id") 

Documentation:

#root.method, #root.target et #root.caches pour des références dans le procédé, objet cible et la mémoire cache affectée (s), respectivement.

+0

merci, @OrangeDog – rimsky90

+0

@ rimsky90 Si cette réponse vous a été utile, cliquez sur la flèche du haut et la coche pour la marquer comme acceptée. – OrangeDog