Spring DI via constructeur
Utilise Spring pour dépendance injecter un bean via constructeur.
1. IOutputGenerator
Une interface et une classe d'implémentation de celui-ci.
package com.example.output; public interface IOutputGenerator { public void generateOutput(); }
package com.example.output.impl; import com.example.output.IOutputGenerator; public class JsonOutputGenerator implements IOutputGenerator { public void generateOutput(){ System.out.println("This is Json Output Generator"); } }
2. Classe d'aide
Une classe d'assistance, utilisera plus tard Spring pour DI le IOutputGenerator, via le constructeur.
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; public void generateOutput() { outputGenerator.generateOutput(); } //DI via constructor public OutputHelper(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
3. Configuration du ressort
Voir ci-dessous la configuration du bean Spring, Spring va DI au-dessus de «JsonOutputGenerator» dans cette classe «OutputHelper», via le constructeur «public OutputHelper(IOutputGenerator outputGenerator)».
4. Exécuter
Chargez tout et lancez-le.
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.example.output.OutputHelper; public class App { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "SpringBeans.xml"); OutputHelper output = (OutputHelper)context.getBean("OutputHelper"); output.generateOutput(); } }
Sortie
This is Json Output Generator
Constructor type ambiguities
Pour un constructeur prenant en charge plusieurs paramètres, cela entraînera un problème d'ambiguïtés de type d'injection de constructeur commun, veuillez lire cesolution.
Télécharger le code source
Téléchargez-le -Spring-DI-constructor-example.zip (6 Ko)