Spring DI via constructeur

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)