Pour des raisons de performances, j'ai une classe qui stocke un Map
dont la clé est Class<?>
et sa valeur est fonction des champs de cette classe. La carte est remplie lors de l'exécution du code en fonction du type de l'objet appelant. Ce qui précède est une généralisation/simplificationÉcoute de la classe recharger en Java
public class Cache {
private static final Map<Class<?>, String> fieldsList = ...;
//Synchronization omitted for brevity
public String getHqlFor(Class<?> entity){
if (!fieldsList.containsKey(entity))
fieldsList.put(entity,createHql(entity));
return fieldsList.get(entity);
}
}
Au cours du développement, grâce à l'aide de JRebel, je fais souvent des modifications aux classes en changeant les propriétés entières ou tout simplement leur nom. Je peux continuer le développement très bien. Cependant, si je mets déjà une valeur dans le cache, il sera périmé pour toujours.
Ce que je demande ici est s'il est possible d'intercepter l'événement qu'une classe dans le classpath a changé. Très large ... Mais mon problème spécifique est très simple: puisque j'ai un tel besoin seulement pendant le développement, je veux juste effacer ce cache dans le cas n'importe quelle classe dans mes changements de classpath.
Comment puis-je accomplir ceci? Je ne ai pas besoin de faire quoi que ce soit spécial que l'interception de l'événement et simplement essuyer le cache
Vous pourriez utiliser un Classloader personnalisé qui fait cela? – daniu