How dependency injection works in Spring?

Dependency Injection

Visão global

Spring bean injection is also popularly known as ‘Dependency Injection (DI)’. The heart of Spring framework is ‘Inversion Of Control (IoC)’ and DI is the implementation part of IoC. We will start our discussion with the assumption that the concept and purpose of IoC and DI is already know.

In this article, we will focus on different types of Spring bean injections with some practical coding examples.








Dependency Injection

Spring bean injections can be performed in two major ways, one is known as Constructor-based DI and the other one is known as Setter-based DI. In the following sub-sections we will check how these can be achieved.

Constructor Based DI

In a constructor based DI, dependencies are injected through constructors. Cada argumento do construtor é um objeto de dependência / bean. O contêiner do Spring invoca os construtores com os argumentos.

Vamos verificar um exemplo. Existem duas classes, one is the País classe eo outro é o Estado classe. The País classe tem uma dependência no Estado classe. So, passaremos a dependência ao País classe através de seu construtor (como mostrado abaixo).

Listing 1: classe país

com.techalpine.spring pacote;

classe pública País {

Estado Estado privada;

País pública(Estado Estado) {

System.out.println(“Dentro construtor País.” );

this.state = Estado;

}

stateName public void() {

state.stateName();

}

}








Now, essa dependência pode ser usado para chamar métodos diferentes.

Segue-se o Estado trechos de código classe.

Listing 2: classe Estado

com.techalpine.spring pacote;

Estado public class {

Estado pública(){

System.out.println(“Dentro construtor Estado.” );

}

stateName public void() {

System.out.println(“Dentro nome de Estado: West Bengal”);

}

}

Segue-se o arquivo de configuração XML para conectar aqueles feijões e suas dependências. O bean id ('StateBean') of the Estado classe é usada como uma referência argumento no construtor País definição de bean class. Now, os grãos são definidos e ligados entre si.

Listing 3: arquivo de configuração XML

<?xml version=”1.0″ encoding=”UTF-8″?>

<feijão xmlns =”http://www.springframework.org/schema/beans”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd”>

<!– Definição de feijão País –>

<bean id =”countryBean” class =”com.techalpine.spring.Country”>

<Arg-construtor ref =”stateBean”/>

</feijão>

<!– Definição de feijão Estado –>

<bean id =”stateBean” class =”com.techalpine.spring.State”>

</feijão>

</feijões>

A seguir é a classe principal para testar a injeção de feijão-com base construtor.

Listing 4: arquivo do aplicativo principal

com.techalpine.spring pacote;

import org.springframework.context.ApplicationContext;

importação org.springframework.context.support.FileSystemXmlApplicationContext;

TestBeanInjection classe pública {

public static void main(Corda[] args) {

ApplicationContext contexto = new FileSystemXmlApplicationContext(

“WebContent / WEB-INF / beanConfig.xml”);

País countryobj = (País)context.getBean(“countryBean”);

countryobj.stateName();

}

}








Now, executar a classe como uma aplicação stand-alone e ele vai mostrar a seguinte saída no console.

Dentro construtor Estado
Dentro construtor País
Dentro nome de Estado: West Bengal

Conjuntos de Bases DI

Numa base DI Setter, dependências são passados ​​através de métodos setter. container Spring invoca esses métodos setter de instanciar o feijão. Here, o mecanismo e os componentes são quase semelhante ao DI construtor baseado. A única diferença é, na passagem de dependências ea configuração XML. Em uma injeção com base setter, <propriedade> marcações são utilizadas em vez de <constructor-arg> tag.








Conclusão

Neste artigo nós explicamos as maneiras como feijão mola podem ser injetadas. Não existe uma regra clara quando usar DI setter base ou construtor base. Nós geralmente vão para o construtor base DI quando as dependências são obrigatórios, e selecione DI baseada em setter quando as dependências são opcionais. Mas combinações de ambos também são permitidos.

 

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share