Assolutamente no. Secondo me, se usato con parsimonia , è in realtà uno dei pattern più utili che trovi. È un modo semplice per risolvere problemi difficili estremamente . Certo, ogni critica è vera, ma ad essere onesti, sono disposto a trattare un po 'di cattivo schema in un'applicazione / framework altrimenti ben progettata che segue gli altri schemi migliori.
L'esempio migliore di un singleton efficace, a mio parere, è un LogManager
-qualcosa che di solito si utilizza in tutta l'applicazione, ma si desidera averlo definito, configurato e gestito in un'unica posizione. Nella maggior parte degli altri casi in cui ho iniziato a utilizzare un singleton, alla fine ho finito per refactoring il codice in qualcos'altro. Ma mantengo ancora il motivo singleton nella mia tasca posteriore per quei rari casi in cui fa più bene che male.
Non ho mai usato Spring, e ho usato Java a malapena, quindi sentitevi liberi di prendere questa risposta con un pizzico di sale.