Une petite précision : singleton=true (à remplacer maintenant par scope=singleton, qui est d'ailleurs le scope par défaut) signifie simplement que Spring crée une unique instance de ce bean pour chaque JVM. L'aspect statefull ou stateless, c'est ton code qui le décide : si tu mets de l'état dans un bean 'singleton Spring', l'état sera partagé si ce bean est injecté. Au sens strict du terme, ce bean est statefull
Sinon :
- soit tu customise la BeanFactory Spring, pour faire du bricolage à la création/injection des beans (org.springframework.beans.factory.support.*)
- soit si tes callbacks sont gérées par Spring, tu peux passer par une factory qui regarde la classe appelante (une classe Spring, genre SimpleInstantiationStrategy) et renvoyer seulement dans ce cas la la même instance, et dans les autres cas une nouvelle instance créée. Ca marche seulement si ton bean à état n'est pas injecté ailleurs.
J'aurais plus de temps pour une réponse approfondie demain.
---------------
"Don't look for a reason, look for a way out" - Cube