Paano dependency iniksyon gumagana sa Spring?

Dependency Injection

Pangkalahatang-ideya ng

Spring bean iniksyon ay din sikat na kilala bilang 'dependency iniksyon (DI)’. Ang puso ng Spring framework ay 'pagbabaligtad ng Control (IoC)’ at DI ay ang pagpapatupad bahagi ng IoC. Magsisimula kami sa aming discussion sa palagay na ang konsepto at layunin ng IoC at DI ay na malaman.

In this article, kami ay tumutok sa iba't ibang uri ng Spring bean injections na may ilang mga praktikal na mga halimbawa coding.








dependency iniksyon

Spring bean injections ay maaaring isagawa sa dalawang pangunahing mga paraan, isa ay kilala bilang Constructor-based DI at ang iba pang isa ay kilala bilang setter-based DI. Sa mga sumusunod na sub-seksyon ay naming suriin kung paano ang mga maaaring makamit.

Constructor Based DI

Sa isang constructor batay DI, dependencies ay injected sa pamamagitan constructors. Ang bawat argument ng constructor ay isang dependency object / bean. Ang Spring lalagyan invokes ang constructor na may mga argumento.

Ipaalam sa amin suriin ang isang halimbawa. Mayroong dalawang klase, one is the bansa klase at ang iba pang isa ay ang estado klase. The bansa klase ay may dependency sa estado klase. So, kami ay pumasa sa dependency sa bansa manggagawa sa pamamagitan ng constructor (tulad ng ipinapakita sa ibaba).

Listing 1: klase Bansa

package com.techalpine.spring;

pampublikong klase Bansa {

pribadong State estado;

pampublikong Bansa(estado State) {

System.out.println(“Inside Bansa constructor.” );

this.state = estado;

}

pampublikong magpawalang-bisa stateName() {

state.stateName();

}

}








Now, ito dependency ay maaaring gamitin upang tumawag iba't ibang paraan.

Sumusunod ay ang estado snippet class code.

Listing 2: State klase

package com.techalpine.spring;

pampublikong klase State {

pampublikong State(){

System.out.println(“Inside State constructor.” );

}

pampublikong magpawalang-bisa stateName() {

System.out.println(“Inside pangalan State: West Bengal”);

}

}

Sumusunod ay ang XML configuration file sa kawad mga beans at ang kanilang mga dependencies. Ang bean id ('StateBean') of the estado class is used as a constructor argument reference in the bansa class bean definition. Now, the beans are defined and wired together.

Listing 3: XML configuration file

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

<beans 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”>

<!– Definition for Country bean –>

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

<constructor-arg ref=”stateBean”/>

</bean>

<!– Definition for State bean –>

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

</bean>

</beans>

Following is the main class to test the constructor-based bean injection.

Listing 4: Main application file

package com.techalpine.spring;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class TestBeanInjection {

pampublikong static na walang bisa pangunahing(Pisi[] args) {

ApplicationContext context = new FileSystemXmlApplicationContext(

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

Country countryobj = (bansa)context.getBean(“countryBean”);

countryobj.stateName();

}

}








Now, run the class as a stand-alone application and it will show the following output on the console.

Inside State constructor
Inside Bansa constructor
Inside pangalan State: West Bengal

Sets Bases DI

Sa isang setter batay DI, dependencies ay dumaan sa pamamagitan ng seter pamamaraan. Spring lalagyan invokes mga seter pamamaraan upang magbigay ng halimbawa ng mga lihim. Here, ang mekanismo at ang mga bahagi ay halos katulad sa mga tagapagbuo batay DI. Ang pagkakaiba lamang ay, sa pagpasa ng mga dependencies at ang XML configuration. Sa isang setter batay iniksyon, <ari-arian> tag ay ginagamit sa halip ng <constructor-arg> tag.








Konklusyon

Sa artikulong ito kami ay may ipinaliwanag ang mga paraan kung paano spring beans maaaring injected. Walang malinaw na-cut rule kung kailan gamitin ang setter based o constructor batay DI. Karaniwan naming pumunta para sa constructor batay DI kapag ang dependencies ay sapilitan, at piliin ang setter-based DI kapag ang dependencies ay opsyonal. Ngunit mga kumbinasyon ng pareho ay pinapayagan din.

 

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share