Frühling DI über Konstruktor
Verwendet Spring, um eine Bean über einen Konstruktor in Abhängigkeit zu injizieren.
1. IOutputGenerator
Eine Schnittstelle und Implementierungsklasse davon.
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. Hilfsklasse
Eine Hilfsklasse, verwenden Sie später Spring, um den IOutputGenerator über einen Konstruktor zu DI.
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. Federkonfiguration
Siehe unten Spring Bean-Konfiguration, Spring wird über "JsonOutputGenerator" über den Konstruktor "public OutputHelper(IOutputGenerator outputGenerator)" in diese "OutputHelper" -Klasse DI.
4. Starte es
Laden Sie alles und führen Sie es aus.
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(); } }
Ausgabe
This is Json Output Generator
Constructor type ambiguities
Für Konstruktoren, die mehrere Parameter unterstützen, führt dies zu häufig auftretenden Mehrdeutigkeiten beim Typ der Konstruktorinjektion. Lesen Sie bitte diesesolution.
Quellcode herunterladen
Laden Sie es herunter -Spring-DI-constructor-example.zip (6 KB)