Pourquoi ne pas le Printemps de soutien direct champ d'injection de dépendance (à l'exception de autocâblés)?

Je suis intéressé dans le champ direct de l'injection de dépendances. Traditionnellement, le Printemps prend en charge à la fois constructeur d'injection (fournir des arguments aux constructeurs) et de définition basée sur l'injection (l'appel de setters sur un appel).

Toutefois, le Printemps est aussi capable de champ direct injection (réglage membre de champs d'un objet sans une méthode de définition), comme en témoigne l'annotation des champs avec @Autowired. Permettra à l'autowiring est limitée à "haricots", donc des valeurs primitives ne peut pas être injecté (même si cela peut être un peu contourné par la création de haricots de la classe "java.lang.Chaîne" - cela fonctionne, mais a la normale mises en garde de permettra à l'autowiring.) En plus de cela, le Printemps prend en charge @Value de régler directement les valeurs de champs des membres de propriétés etc.

Encore, le Printemps ne permet pas de propriétés à régler directement aux champs des membres (sans permettra à l'autowiring).

Ma question est: pourquoi?

Il est évidemment capable de le faire, alors pourquoi n'est-ce pas? Existe-il des gros effets secondaires négatifs que faire pour éviter cela? Ou est la capacité en quelque sorte limité de sorte que seule permettra à l'autowiring de sens? Est-il besoin de certains grands hacks que d'appeler les setters?

Noter que je ne souhaite pas discuter des mérites relatifs d'avoir les setters et getters en général, tout les raisons pour lesquelles le Printemps a fait ce choix.

  • Je me suis toujours demandé la même chose et a assumé la raison était liée à la prise de nettoyer le code" et à la prévention de compilateur avertissements autour de cette valeur-a-jamais-set-et-vous-êtes-essayer-à-utiliser-il.
InformationsquelleAutor Nakedible | 2011-03-25