Spring DI über Konstruktor

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)