Ответ 1
Синтаксис Java связан с загрузчиком класса Java, а одиночный элемент Spring ограничен контекстом контейнера.
Что в основном означает, что в Java вы можете быть уверены, что одноэлемент является действительно синглом только в контексте загрузчика классов, который его загрузил. Другие загрузчики классов должны быть способны создать еще один экземпляр (при условии, что загрузчики классов не находятся в одной иерархии загрузчика классов), несмотря на все ваши усилия в коде, чтобы предотвратить его.
В Spring, если вы можете загрузить свой одноэлементный класс в двух разных контекстах, а затем снова можно разбить концепцию singleton.
Итак, в целом, Java рассматривает что-то одноэлементное, если он не может создать более одного экземпляра этого класса внутри данного загрузчика классов, тогда как Spring будет рассматривать что-то одноэлементное, если он не может создать более одного экземпляра класса внутри данного контейнера/контекста.