pourquoi ne pouvons-nous pas autowire champs statiques au printemps
Pourquoi je ne peux pas nous autowire la statique de la variable d'instance dans le Ressort du haricot. Je sais qu'il existe d'autre moyen pour atteindre cet objectif, mais je veux juste savoir pourquoi je ne peux pas faire en dessous de chemin.
par exemple
@Autowired
public static Test test;
- pouvez-vous déchiqueter un peu de lumière sur la façon dont vous faites allusion.
Vous devez vous connecter pour publier un commentaire.
Parce que l'utilisation de champs statiques encourage l'utilisation de méthodes statiques. Et les méthodes statiques sont le mal. Le but principal de l'injection de dépendance est de laisser le conteneur de créer des objets pour vous et les fils. Aussi, il facilite les tests.
Une fois que vous commencez à utiliser des méthodes statiques, vous n'avez plus besoin de créer une instance de l'objet et de test est beaucoup plus difficile. Aussi vous ne pouvez pas créer plusieurs instances d'une classe donnée, chacune avec une autre dépendance injecté (car le champ est implicitement partagé et crée global de l'état a également du mal).
@BeforeClass
dans un SpringJUnit4ClassRunner, et pour que la méthode d'accès haricots@Autowired
dans le test.. en gros, vous ne pouvez pas. Ce qui est ennuyeux.Parce que quand la classe loader charge les valeurs statiques, le Printemps contexte n'est pas encore forcement chargé.
Si le chargeur de classe ne sera pas correctement injecter de la statique de la classe du bean et sera un échec.
En fonction de la programmation orientée objet concept, il sera mauvaise conception si les variables statiques sont autocâblés.
Variable statique n'est pas une propriété de l'Objet, mais c'est une propriété d'une Classe.
Le printemps de l'auto de câblage est effectué sur les objets, et qui rend la conception propre à mon avis.
Vous pouvez déployer l'auto filaire bean objet singleton, et d'obtenir la même que la définition statique.
Par cette solution, vous pouvez autocâblés champs statiques au printemps.