JavaRush /Blog Jawa /Random-JV /Spring. Pelajaran 4: Atribut nilai kanggo semat nilai
Umaralikhon
tingkat
Красноярск

Spring. Pelajaran 4: Atribut nilai kanggo semat nilai

Diterbitake ing grup
Lan supaya ... We nerusake Course kita ing Spring. Ing wulangan pungkasan kita sinau injeksi dependensi nggunakake setter. Yen sampeyan ngerteni, mula kita ngetrapake nilai nggunakake tautan menyang id. Yaiku, implementasine ditindakake nggunakake atribut ref. Iku katon kaya iki: Listing 1
<bean id="javaDeveloper" class="org.example.JavaDevelopment"/>

<bean id="hiringDepartment" class="org.example.HiringDepartment">
        <property name="development" ref="javaDeveloper"/>
</bean>
Ing kene 4 - baris nuduhake id "javaDeveloper", sing ngetrapake nilai kelas JavaDevelopment. Apa yen kita pengin nyuntikake nilai kasebut kanthi manual utawa njaluk kanthi cara liya banjur nyuntikake. Ayo katon ing conto. Saben pegawe duwe kewarganegaraan lan gaji. Lan supaya entitas kasebut ditetepake ing kelas HiringDepartment. Ayo ngomong iki: Listing 2
package org.example;

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

    public void displayInfo(){
        System.out.println("Name: " + development.getName());
        System.out.println("Job: " + development.getJob());
    }

    public void setDevelopment(Development development){
        this.development = development;
    }

    public Development getDevelopment(){
        return development;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public String getCitizenship() {
        return citizenship;
    }

    public void setCitizenship(String citizenship) {
        this.citizenship = citizenship;
    }
}
Ing kene kita wis nambahake 2 lapangan. gaji int lan String kewarganegaraan . Kita uga nemtokake getter lan setter kanggo obyek kasebut. Minangka pangeling, Spring nuduhake getter lan setter kasebut ing mburi layar kanggo ngiket nilai menyang obyek kelas. Kita durung ndemek kelas liyane. Banjur kita bakal nggawe maneh file applicationContext, sing nemtokake kacang buncis kanggo obyek kita. Lan katon kaya iki: Listing 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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <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="javaDeveloper"/>
        <property name="citizenship" value="USA"/>
        <property name="salary" value="5000"/>
    </bean>

</beans>
Ora kaya Listing 1, rong properti liyane wis ditambahake ing kene (baris 12 lan 13). Ing kene ana atribut nilai , sing ditetepake ing tag properti. Ayo kula ngelingake maneh yen nilai atribut jeneng kudu cocog karo obyek sing diarani kacang. Lan banjur Spring independen nemtokake getter lan setter nggunakake nilai kasebut. Lan nggunakake atribut nilai , kita ngetrapake nilai kanggo lapangan. Elinga yen nilai loro kasebut ditetepake ing kuotasi, sanajan iki ora biasa kanggo jinis int. Nanging Spring, kaya biasane, nemtokake nilai sing kudu digandhengake karo jinis apa. Iki kedadeyan amarga atribut jeneng . Kanthi jeneng kacang, Spring nuduhake obyek saka kelas lan nemtokake jinis obyek iki. Inggih, iku kabeh. Saiki sing isih ana yaiku mriksa nganyari ing kelas Utama: Listing 5
package org.example;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String ... args){
        //Определяем контекст файл в котором содержатся прописанные нами бины
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        //Получем бины, которые были определены в файле applicationContext.xml
        HiringDepartment hiringDepartment = context.getBean("hiringDepartment", HiringDepartment.class);

        hiringDepartment.displayInfo();
        System.out.println("Citizenship: " + hiringDepartment.getCitizenship());
        System.out.println("Salary: " + hiringDepartment.getSalary());
        context.close(); //Контекст всегда должен закрываться
    }
}
Ora perlu ngganti akeh ing kene. Mung kanggo njupuk asil kita nelpon getter saka kelas HiringDepartment nggunakake stream output standar. Akibaté, kita entuk jawaban ing ngisor iki:
Name: Alexa
Job: Middle Java developer
Citizenship: USA
Salary: 5000
OK. Ayo kita duwe 10 karyawan sing duwe kewarganegaraan sing padha lan entuk gaji sing padha. Lan ayo perusahaan mutusake kanggo nambah gaji. Banjur sampeyan kudu ngganti kabeh 10 nilai kasebut kanthi manual. Bosen banget. Apa yen kita nemtokake nilai kasebut ing file sing kapisah lan nggandhengake nilai kasebut karo kacang buncis? Banjur kita mung kudu ngganti nilai sapisan ing file iki, lan kacang buncis sing ngrujuk nilai iki bakal diganti kanthi otomatis. Coba... Kanggo nindakake iki, kita bakal nggawe sawetara nganyari ing struktur proyek lan ing file applicationContext.xml. Pisanan, ing folder sumber daya, tambahake file anyar kanthi ekstensi .properties . Aku jenenge file iki "myApp.properties". Saiki struktur proyek wis dijupuk ing ngisor iki: Spring.  Pawulangan 4. Atribut nilai kanggo semat nilai - 1 Lan ing file kita bakal nulis nilai ing ngisor iki:
employee.citizenship="Russia"
employee.salary=6000
Ing sisih kiwa tandha "=" ana jeneng variabel (yen bisa kasebut), lan ing sisih tengen ana nilai variabel kasebut. Sampeyan bisa menehi jeneng apa wae sing disenengi, nanging kaya biasane, kanthi makna. Lan ya, periode ing kene nduweni peran strategis, dudu sintaksis. Kita uga duwe manajer, uga duwe gaji dhewe. Banjur kita mung bisa jeneng variabel iki kaya iki: manager.gaji. Tegese, jeneng variabel ora bakal pas lan ngganggu siji liyane. Saiki ayo nganyari file applicationContext.xml. Sadurunge ngumumake kacang buncis, sampeyan kudu nulis baris ing ngisor iki:
<context:property-placeholder location="classpath:myApp.properties"/>
Ing kene kita nemtokake file sing digawe kanggo nampilake nilai kasebut. Banjur ing atribut nilai kita sijine tandha dolar $ ing tanda kutip pindho lan ing kurung kriting {} kita nulis jeneng variabel saka file myApp.properties:
<property name="salary" value="${employee.salary}"/>
Akibaté, Spring nggoleki variabel iki, entuk nilai, lan nempelake menyang obyek kelas. Kode lengkap katon kaya iki: Listing 6
<?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">

    <context:property-placeholder location="classpath:myApp.properties"/>

    <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="javaDeveloper"/>
        <property name="citizenship" value="${employee.citizenship}"/>
        <property name="salary" value="${employee.salary}"/>
    </bean>

</beans>
Ayo miwiti program:
Name: Alexa
Job: Middle Java developer
Citizenship: "Russia"
Salary: 6000
Kaya biasane, cara paling apik kanggo sinau pemrograman yaiku program. Baleni apa sing wis sampeyan sinau dhewe, nyoba nganyari unsur, muter kode kasebut. Ing cendhak, pindhah menyang. Lan iku kabeh kanggo kula. Matur nuwun kanggo perhatian sampeyan! Kode sumber ing tautan GitHubku Gabung karo saluran telegramku Konten kursus Diterusake...
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION