Я думаю, что нашел ответ сам. Я перешел к исходному коду Spring и увидел, как на самом деле реализованы эти функции. Вот что я нашел:
Установка свойств через XML, вероятно, является самой старой частью Spring, и она очень сильно зависит от классов "java.beans" для самоанализа, перечисления свойств и т. Д. И совершенно очевидно, что они вообще не поддерживают самоанализ поля. Поверх этого находится механизм преобразования типов, который определяет, как значение свойства может быть преобразовано в подходящее значение для рассматриваемого свойства. Здесь нет аккуратно разделимых частей.
Весь материал @Autowired и т. Д. Реализован в BeanPostProcessor, который имеет собственную механику сопоставления типов, которая не имеет ничего общего с преобразованием типов. Именно поэтому он только вводит бобы. То же самое в значительной степени относится к @Value, это просто то, что решается на месте и не имеет ничего общего со свойствами.
Таким образом, добавление поддержки внедрения полей, в частности, для свойств, не является тривиальной инженерной задачей, поскольку части кода, выполняющие одно или другое, практически полностью отделены друг от друга.
Это не совсем ответ «Почему?», Но я думаю, что это более убедительное объяснение того, почему Spring не добавил непосредственное внедрение зависимости от полей, чем другие объяснения, которые я слышал. Если у них нет чего-то фундаментального против этого (что я сомневаюсь, учитывая, что они хотят разрешить настройку существующих сторонних классов, а не только JavaBeans), то это просто вопрос инженерных усилий, чтобы получить функциональность.