Comment ne Ressort @Autocâblés travail
Je suis tombé sur un exemple de @Autocâblés
public class EmpManager {
@Autowired
private EmpDao empDao;
}
J'étais curieux de savoir comment l'empDao obtenir des ensembles puisqu'il n'existe pas de méthodes de définition et il est privé.
- Regarde ce post stackoverflow.com/questions/3153546/...
- Double Possible de Comprendre le Printemps @Autocâblés utilisation
Vous devez vous connecter pour publier un commentaire.
Java permet de contrôles d'accès sur un champ ou une méthode pour être désactivées (oui, il y a une vérification de sécurité pour passer en premier) via le
AccessibleObject.setAccessible()
méthode qui fait partie du cadre de réflexion (à la foisField
etMethod
hériter deAccessibleObject
). Une fois le terrain à la découverte et à l'écrit, c'est assez trivial à faire le reste, il suffit d'un Simple Question De Programmation.Java vous permet d'interagir avec les membres privés d'une classe via la réflexion.
Découvrez ReflectionTestUtils, ce qui est très pratique pour écrire des tests unitaires.
Pas besoin de setter, il vous suffit de déclarer la Classe EmpDao avec l'annotation @component afin que le Printemps identifie comme faisant partie des composants qui sont contenues dans l'ApplicationContext ...
Vous avez 2 solutions:
À déclarer manuellement vos haricots dans le fichier XML applicationContext:
À utiliser la détection automatique par seeting ces lignes dans votre fichier de contexte:
< context:component-scan de la base-package="package"/>
< context:annotation-config/>
ET utiliser au printemps annotation pour déclarer les classes que votre printemps conteneur sera de gérer comme composants
ex:
ET à annoter son de référence par @Autocâblés:
Permettra à l'autowiring arrive en plaçant une instance d'un bean dans le champ souhaité dans une instance d'un autre bean. Les deux classes devraient être les haricots, c'est à dire qu'ils doivent être définies afin de vivre dans le contexte de l'application.
Printemps connaît l'existence des haricots EmpDao et MyClass et va instancier automatiquement une instance de EmpDao dans Maclasse
Printemps utilise le CGLib API pour fournir autocâblés l'injection de dépendance.
Références
Lecture