Tomemos el ejemplo más simple: usted tiene una aplicación y solo usa el cargador de clases predeterminado. Tienes una clase que, por el motivo que sea, decides que no debe tener más de una instancia en la aplicación. (Piense en un escenario donde varias personas trabajan en piezas de la aplicación).
Si no está utilizando el marco Spring, el patrón Singleton garantiza que no habrá más de una instancia de una clase en su aplicación. Esto se debe a que no puede instanciar instancias de la clase haciendo 'nuevo' porque el constructor es privado. La única forma de obtener una instancia de la clase es llamar a algún método estático de la clase (generalmente llamado 'getInstance') que siempre devuelve la misma instancia.
Decir que está utilizando Spring Framework en su aplicación, solo significa que, además de las formas habituales de obtener una instancia de la clase (métodos nuevos o estáticos que devuelven una instancia de la clase), también puede preguntar Spring para obtener una instancia de esa clase y Spring se asegurará de que siempre que solicite una instancia de esa clase siempre devuelva la misma instancia, incluso si no escribió la clase con el patrón de Singleton. En otras palabras, incluso si la clase tiene un constructor público, si siempre pides a Spring una instancia de esa clase, Spring solo llamará a ese constructor una vez durante la vida de tu aplicación.
Normalmente, si utiliza Spring, solo debe usar Spring para crear instancias, y puede tener un constructor público para la clase. Pero si su constructor no es privado, no está realmente impidiendo que alguien cree nuevas instancias de la clase directamente, evitando Spring.
Si realmente quiere una sola instancia de la clase, incluso si usa Spring en su aplicación y define la clase en Spring como singleton, la única manera de garantizar eso también es implementar la clase utilizando el patrón Singleton. Eso asegura que habrá una sola instancia, ya sea que las personas usen Spring para obtener una instancia o eludir Spring.
Corrígeme si me equivoco, de acuerdo con usted si tengo que implementar cualquier objeto como singleton, por lo que no hay necesidad de implementar el patrón singleton. Crear ese bean usando Spring funcionará.Estoy un poco confundido ahora con mi comprensión relacionada con el patrón de diseño de Singleton y el alcance de Singleton en el marco de Spring. – Peeyush
El resorte no lo obliga a usar el patrón de Singleton. – lexicore