Интересно, как Spring может это сделать?
SomeServiceImpl
является синглтоном, поэтому он должен быть собран при запуске. Сборка bean-компонента означает внедрение всех необходимых зависимостей. Хотя некоторые кандидаты могут иметь область действия, отличную от области синглтона, они все еще должны быть предоставлены Для таких бинов Spring создает прокси. Прокси - это, по сути, бессмысленная оболочка, пока не появится какой-то контекст.
Если я использую ключевое слово final и использую инъекцию конструктора, Spring все еще может автоматически связать объект.
Spring поддерживает инжекцию на основе конструктора. Он проверяет подпись и ищет кандидатов для инъекций; модификаторы поля не имеют значения.
Является ли хорошей практикой использование объектов сеанса в слое Service? Или я могу свободно использовать эти объекты в слоях Controller и Service?
Пока служба ориентирована на веб-интерфейс и связана с сеансом, вы можете свободно вводить в нее bean-объекты сессионной области.