Java Spring bean avec un constructeur privé
Est possible au Printemps que la classe du bean n'a pas de constructeur public, mais uniquement en privé ?
Sera-ce constructeur privé invoqué lorsque le bean est créé?
Merci.
- Comment donner un essai et puis affichage des résultats?
- Il est difficile - je n'ai pas tous les source de.
Vous devez vous connecter pour publier un commentaire.
Oui, le Printemps peut invoquer les constructeurs privés. Si elle trouve un constructeur avec les bons arguments, indépendamment de la visibilité, il va utiliser la réflexion pour définir son constructeur pour être accessible.
Vous pouvez toujours utiliser une méthode de fabrique de créer des haricots plutôt que de compter sur un constructeur par défaut, à partir de Le conteneur IoC: Instanciation à l'aide d'un exemple de méthode de fabrique:
Ceci a l'avantage que vous pouvez utiliser non-constructeurs par défaut de votre bean, et les dépendances de la méthode de fabrique de bean peut être injecté en tant que bien.
Oui, les constructeurs Privés sont invoquées par le printemps.
Envisager de mon code:
Bean fichier de définition:
Bean classe:
Le code ci-dessus fonctionne très bien. Par conséquent, le printemps a invoqué le constructeur privé.
Vous auriez normalement statique méthode de fabrique de ces haricots, vous pouvez spécifier la méthode de printemps pour obtenir une instance de bean. Voir 3.3.1.3 ici. C'est la façon dont il est recommandé d'ici le Printemps, plutôt que d'aller à l'encontre de restrictions de visibilité.
Oui ! Le printemps peut accéder constructeur privé.
Il fonctionne en interne, comme le code ci-dessous.