Como a inxección de dependencia funciona na primavera?

Dependency Injection

Visión global

inxección de bean Spring tamén é popularmente coñecido como "inxección de dependencia (DE)’. O corazón do framework Spring é "Inversión de Control (IOC)’ e DI é a parte de implantación de IOC. Imos comezar a nosa discusión co presuposto de que o concepto ea finalidade do COI e DI é xa sabe.

In this article, imos concentrar en diferentes tipos de inxeccións de feixón primavera con algúns exemplos prácticos de codificación.








Dependency Injection

inxeccións de feixón do freo pode realizarse de dúas formas principais, un é coñecido como base DI-Constructor eo outro é coñecido como base DI-Setter. Nos seguintes sub-seccións imos comprobar como estes poden ser alcanzados.

Constructor Based DI

Nunha base DI constructor, dependencias son inxectados a través de construtores. Cada argumento do constructor é un obxecto de dependencia / bean. O contenedor do Spring invoca os canteiros cos argumentos.

Imos comprobar un exemplo. Existen dúas clases, unha é a país clase eo outro é o estado clase. The país clase ten unha dependencia no estado clase. So, pasaremos a dependencia ao país clase a través do seu constructor (as shown below).

Listing 1: clase país

com.techalpine.spring paquete;

clase pública País {

Estado Estado privada;

país pública(Estado Estado) {

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

this.state = Estado;

}

stateName public void() {

state.stateName();

}

}








Now, esta dependencia pode ser usado para chamar métodos diferentes.

Séguese o estado fragmentos de código clase.

Listing 2: clase Estado

com.techalpine.spring paquete;

Estado public class {

Estado pública(){

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

}

stateName public void() {

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

}

}

Séguese o ficheiro de configuración XML para conectar os feixóns e as súas dependencias. O bean id ('StateBean') of the estado clase é usada como unha referencia argumento no constructor país definición de bean class. Now, os grans son definidos e conectados entre si.

Listing 3: arquivo de configuración XML

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

<feixón 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”>

<!– Definición de feixón País –>

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

<Arg-constructor ref =”stateBean”/>

</feixón>

<!– Definición de feixón Estado –>

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

</feixón>

</feixóns>

A continuación é a clase principal para probar a inxección de feixón-base constructor.

Listing 4: arquivo da aplicación principal

com.techalpine.spring paquete;

importación org.springframework.context.ApplicationContext;

importación org.springframework.context.support.FileSystemXmlApplicationContext;

TestBeanInjection clase 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, realizar a clase como unha aplicación stand-alone e vai amosar a seguinte saída na consola.

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

Conxuntos de Bases DI

Nunha base DI Setter, dependencias pásase a través de métodos Setter. container Spring invoca estes métodos Setter de instanciar o feixón. Here, o mecanismo e os compoñentes son case semellante ao DI constructor baseado. A única diferenza é, no paso de dependencias ea configuración XML. Nunha inxección en base Setter, <propiedade> reservas son utilizadas en vez de <Constructor-arg> tag.








Conclusión

Neste artigo nós explicamos as formas como faba primavera poden inxectados. Non existe unha regra clara cando usar DI Setter base ou constructor base. Nós xeralmente van para o constructor base DI cando as dependencias son obrigatorios, e seleccione DI baseada Setter cando as dependencias son opcionais. Pero combinacións de ambos tamén se permiten.

 

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share