Supposons que nous avons le code Java suivant:Carte des énumérations et l'injection de dépendance au printemps 2,5
public class Maintainer {
private Map<Enum, List<Listener>> map;
public Maintainer() {
this.map = new java.util.ConcurrentHashMap<Enum, List<Listener>>();
}
public void addListener(Listener listener, Enum eventType) {
List<Listener> listeners;
if((listeners = map.get(eventType)) == null) {
listeners = new java.util.concurrent.CopyOnWriteArrayList<Listener>();
map.put(eventType, listeners);
}
listeners.add(listener);
}
}
Cet extrait de code est rien mais un peu amélioré modèle d'écoute où chaque auditeur raconte quel type d'événement il s'intéresse à, et la méthode fournie maintient une carte simultanée de ces relations.
Au départ, je voulais que cette méthode soit appelée via mon propre cadre d'annotation, mais heurté un mur de briques de différentes limitations d'annotation (par exemple, vous ne pouvez pas avoir java.lang.Enum comme annotation param, il y a aussi un ensemble de divers problèmes de classloader) a donc décidé d'utiliser Spring.
Quelqu'un pourrait-il me dire comment je Spring_ify_ this? Ce que je veux obtenir est:
1. Définir Mainteneur classe comme un haricot de printemps.
2. Faites en sorte que toutes sortes d'écouteurs puissent s'enregistrer auprès de Maintainer via XML en utilisant la méthode addListener. Spring doc ou Google sont très généreux dans les exemples.
Existe-t-il un moyen d'y parvenir facilement?
Eh bien, c'est exactement ce que je disais - "vous ne pouvez pas avoir java.lang.Enum comme annotation PARAM". Je demandais comment je fais ça au printemps? – mindas