Comment injecter Spring Bean pour une méthode d'usine nécessitant le paramètre MyClass.class
Je suis en train d'injecter un java.util.préf.Préférences de haricots dans mon contrôleur maître. Le contrôleur ressemble:
@Controller
class MyController {
@Autowired
private Preferences preferences;
}
L'application-context.xml fichier crée le haricot de java.util.préf.Les préférences. Il utilise une méthode de fabrique, j'ai donc l'entrée suivante pour la création de la fève:
<bean id="preferences" class="java.util.prefs.Preferences" factory-method="userNodeForPackage" />
Préférences.userNodeForPackage(param) prend un paramètre de la classe liée à la Préférence. Dans ce cas, le Printemps a besoin pour créer de la fève en effectuant l'appel:
Preferences.userNodeForPackage(MyController.class);
Comment une classe d'être passé à un ressort de haricots instancié avec une méthode de fabrique?
Grâce
Des informations sur l'environnement:
Java 7
Spring 3.1
source d'informationauteur Austin Haws
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier le
constructor-arg
élémentCeci est expliqué dans la documentation officielle icila section 5.4.1.
Eh bien, je ne sais pas le xml de configuration basée sur une voie, mais je peux vous dire comment vous pouvez instancier via
Configuration
classe.P. S. :
Vous devrez ajouter votre classe de configuration/paquet pour la numérisation soit dans web.xml si vous utilisez l'annotation complète l'approche fondée sur
[contextClass=org.springframework.web.context.support.AnnotationConfigWebApplicationContext]
ou dans votre fichier de configuration comme ci-dessous :Veuillez voir la référence
http://www.skorks.com/2008/10/are-you-using-the-full-power-of-spring-when-injecting-your-dependencies/
d'abord créer la fève de "Préférences" de la classe, soit à l'aide de fichiers xml ou à l'aide de l'annotation.
alors
vous pouvez utiliser cette
<context:annotation-config>
si vous avez créé à l'aide de fèves de configuration xml pour activer le @Autocâblés annotation fonctionnalités(ou )
<context:component-scan base-package="com.estudo.controller" />
si vous avez créé de haricots à l'aide d'annotations.
Remarque : définir les balises ci-dessus dans le ressort de la servlet fichier xml
Spring framework fournit les installations d'injecter de haricots à l'aide de méthode de fabrique. Pour ce faire, nous pouvons utiliser deux attributs du bean élément.
usine-méthode: représente la méthode qui sera invoquée pour injecter le haricot.
usine bean: représente la référence de la fève qui usine méthode sera invoquée. Il est utilisé si l'usine méthode non-statique.
Une méthode qui retourne l'instance d'une classe est appelée méthode de fabrique.
Pouvez-vous essayer de faire des "préférences" une propriété de "MyController".
Quelque chose comme
et ensuite le getter et le setter de la méthode de préférences dans MyController.
Je pense que cela devrait fonctionner.