JavaRush /Blog Jawa /Random-JV /Spring. Wulangan 3. DI nggunakake setter
Umaralikhon
tingkat
Красноярск

Spring. Wulangan 3. DI nggunakake setter

Diterbitake ing grup
Lan supaya ... We nerusake Course kita ing Spring. Ing wulangan pungkasan kita sinau carane nyuntikake dependensi nggunakake konstruktor kelas. Saiki wektune kanggo ngenalake sampeyan cara injeksi dependensi liyane - nggunakake setter . Kanggo mulihake memori pawulangan sadurunge, aku bakal nuduhake sampeyan struktur program kita. Spring.  Wulangan 3. DI nggunakake setter - 1 Kita mung kasengsem ing file HiringDepartment lan applicationContext. Dheweke ngatur proyek kita. Kita bakal nggawe maneh. Iki kode lawas kanggo file HiringDepartment: (Daftar 1)
package org.example;

public class HiringDepartment {
    private Development development; //Определяем интерфейс

    //Конструктор принимает an object интерфейса
    public HiringDepartment(Development development){
        this.development = development;
    }

    public void displayInfo(){
        System.out.println("Name: " + development.getName());
        System.out.println("Job: " + development.getJob());
    }
}
Kaya sing kita deleng ing kene, konstruktor digunakake kanggo miwiti obyek saka jinis Development. Kita mbusak konstruktor iki (utawa ninggalake, ora ana bedane). Lan ayo nulis setter, kaya ing conto ing ngisor iki: (Daftar 2)
package org.example;

public class HiringDepartment {
    private Development development; //Определяем интерфейс

//Вместо конструктора используем сеттер
    public void setDevelopment(Development development){
        this.development = development;
    }

    public void displayInfo(){
        System.out.println("Name: " + development.getName());
        System.out.println("Job: " + development.getJob());
    }
}
Saiki ayo mbukak file applicationContext.xml ing folder sumber daya. Iku katon kaya iki: (Daftar 3)
<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="javaDeveloper" class="org.example.JavaDevelopment"/>
    <bean id="pythonDeveloper" class="org.example.PythonDevelopment"/>

    <bean id="hiringDepartment" class="org.example.HiringDepartment">
        <constructor-arg ref="javaDeveloper"/>
    </bean>

</beans>
Nalika kita ngelingi (utawa ora ngelingi), ing baris <constructor-arg ref="javaDeveloper"/> ketergantungan disuntikake nggunakake konstruktor. Saiki kita kudu nulis ulang baris iki kanggo setter kaya ing ngisor iki:
<bean id="javaDeveloper" class="org.example.JavaDevelopment"/>
<bean id="pythonDeveloper" class="org.example.PythonDevelopment"/>

<bean id="hiringDepartment" class="org.example.HiringDepartment">
    <property name="development" ref="pythonDeveloper"/> <!--Изменяем только тут-->
</bean>
Apa persis sing kedadeyan ing kene? Baris <property name="development" ref="pythonDeveloper"/> nggunakake tembung kunci " properti " kanggo nyuntikake dependensi nggunakake setter. Kepiye Spring ngerteni setter obyek pythonDeveloper sing kudu digandhengake ing conto kita ? Wigati nilai properti = "..." . Iki ditulis minangka "pembangunan" . Lan setter kita ing file HiringDepartment diarani setDevelopment . Spring ngowahi nilai pangembangan dadi setDevelopment behind the scenes . Tegese, aksara pisanan dadi kapital lan prefiks set (developmet -> setDevelopment) diselehake ing wiwitan tembung. Spring.  Wulangan 3. DI nggunakake setter - 2Apa ing ngisor hood? Apa sing kita deleng: Loro kacang digawe nganggo id javaDeveloper lan pythonDeveloper:
<bean id="javaDeveloper" class="org.example.JavaDevelopment"/>
<bean id="pythonDeveloper" class="org.example.PythonDevelopment"/>
Apa sing kedadeyan: Spring nggawe rong obyek saka jinis JavaDevelopment lan PythonDevelopment:
JavaDevelopment javaDevelopment = new JavaDevelopment();
PythonDevelopment pythonDevelopment = new PythonDevelopment();
Lan iki sing kita deleng: A kacang karo id hiringDepartment digawe. Banjur id salah sawijining obyek sing digawe ing ndhuwur ditugasake kanggo properti:
<bean id="hiringDepartment" class="org.example.HiringDepartment">
    <property name="development" ref="pythonDeveloper"/>
</bean>
Apa bener mengkono: Obyek saka jinis HiringDepartment digawe. Banjur metode set saka setDevelopment kelas iki (Development development) diarani. Lan nilai ref (id saka obyek sing digawe) diterusake minangka argumen:
HiringDepartment hiringDepartment = new HiringDepartment();
hiringDepartment.setDevelopment(pythonDevelopment);
Bukak aplikasi:
Name: Mike
Job: Middle Python developer
Aku mung duwe. Matur nuwun kanggo manungsa waé! Kode sumber ing tautan Konten Kursus Gerobak GitHubku Diterusake...
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION