Меня интересует непосредственная инъекция зависимостей полей. Традиционно Spring поддерживает как встраивание конструктора (предоставление аргументов конструкторам), так и вставку на основе набора (вызывающие сеттеры при вызове).
Тем не менее, Spring также способен к прямому вводу поля (заданию полей элемента объекта без метода сеттера), о чем свидетельствуют аннотирование полей с помощью @Autowired
. Autowiring ограничивается только "beans", поэтому примитивные значения не могут быть введены (хотя это можно несколько обойти, создав beans класса "java.lang.String" - это работает, но имеет обычные оговорки об автообновлении. ) В дополнение к этому Spring поддерживает @Value
, чтобы напрямую устанавливать значения в поля-члены из свойств и т.д.
Тем не менее, Spring не позволяет свойствам напрямую задаваться полям-членам (без автосогласования).
Мой вопрос: почему?
Очевидно, это возможно, поэтому почему? Есть ли большие негативные побочные эффекты, которые мешают этому? Или это способность как-то ограничена, так что имеет смысл только автопоиска? Нужны ли вам какие-то более крупные хаки, чем вызовы сеттеров?
Обратите внимание, что я не хочу обсуждать относительные достоинства наличия сеттеров и геттеров в целом, только причины, по которым Spring сделал этот выбор.