Разве это не противоречит базовой концепции объектно-ориентированного программирования, заключающейся в создании нескольких экземпляров объекта на основе шаблона (класса).
Нет, это не так.Spring использует «шаблоны» под капотом при создании синглетонов.
Принципы ОО говорят, что можно создать несколько объектов * .Они не говорят, что должно быть несколькими экземплярами класса, если это не оправдано.И действительно, существует даже классический шаблон проектирования ОО, который поддерживает этот 1 .
И, кроме того, когда это гарантировано, среда Spring может создавать несколько экземпляров.
1 - Шаблон проектирования Singleton имеет свои проблемы (конфигурация в сравнении с кодом, тестируемость и т. Д.), Но он никоим образом не противоречит принципам ОО-программирования.Интересно, что структура DI, такая как Spring, на самом деле помогает устранить недостатки шаблона Singleton.