Давайте рассмотрим простейший пример: у вас есть приложение, и вы просто используете загрузчик классов по умолчанию. У вас есть класс, который по какой-то причине вы решаете, что в приложении не должно быть более одного экземпляра. (Подумайте о сценарии, когда несколько человек работают над частями приложения).
Если вы не используете фреймворк Spring, шаблон Singleton гарантирует, что в вашем приложении не будет более одного экземпляра класса. Это связано с тем, что вы не можете создавать экземпляры класса, выполняя «новое», потому что конструктор является закрытым. Единственный способ получить экземпляр класса - вызвать некоторый статический метод класса (обычно называемый «getInstance»), который всегда возвращает один и тот же экземпляр.
Говоря о том, что вы используете фреймворк Spring в своем приложении, просто означает, что помимо обычных способов получения экземпляра класса (новые или статические методы, возвращающие экземпляр класса), вы также можете задать Spring, чтобы получить экземпляр этого класса, и Spring обеспечит, что всякий раз, когда вы запрашиваете экземпляр этого класса, он всегда возвращает тот же экземпляр, даже если вы не пишете класс с использованием шаблона Singleton. Другими словами, даже если класс имеет открытый конструктор, если вы всегда запрашиваете Spring для экземпляра этого класса, Spring будет вызывать этот конструктор только один раз в течение срока действия вашего приложения.
Обычно, если вы используете Spring, вы должны использовать Spring только для создания экземпляров, и у вас может быть открытый конструктор для класса. Но если ваш конструктор не является частным, вы на самом деле не мешаете никому создавать новые экземпляры класса напрямую, минуя Spring.
Если вам действительно нужен один экземпляр класса, даже если вы используете Spring в своем приложении и определяете класс в Spring как одноэлементный, единственный способ гарантировать, что он также реализует класс с использованием шаблона Singleton. Это гарантирует, что будет один экземпляр, если люди используют Spring для получения экземпляра или обхода Spring.
Исправьте меня, если я ошибаюсь в соответствии с вами, если мне нужно реализовать какой-либо объект как singleton, поэтому нет необходимости реализовывать одноэлементный шаблон. Создание этого компонента с использованием Spring будет работать.Я немного смущен теперь с моим пониманием, связанным с шаблоном Singleton Design и областью Singleton в Spring framework. – Peeyush
Весна не заставляет вас использовать шаблон Singleton. – lexicore