JavaRush /Java Blog /Random-TL /tagsibol. Aralin 4: Ang value attribute para sa pag-embed...
Umaralikhon
Antas
Красноярск

tagsibol. Aralin 4: Ang value attribute para sa pag-embed ng mga value

Nai-publish sa grupo
At kaya... Ipinagpatuloy namin ang aming kurso sa Spring. Sa huling aralin, pinag-aralan namin ang dependency injection gamit ang isang setter. Kung napansin mo, ipinatupad namin ang mga halaga gamit ang mga link sa id. Ibig sabihin, naganap ang pagpapatupad gamit ang katangian ng ref. Mukhang ganito: Listahan 1

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

<bean id="hiringDepartment" class="org.example.HiringDepartment">
        <property name="development" ref="javaDeveloper"/>
</bean>
Narito ang 4 - linya ay tumutukoy sa id na "javaDeveloper", na nagpapatupad ng halaga ng klase ng JavaDevelopment. Paano kung gusto nating i-inject nang manu-mano ang mga value o kunin ito sa ibang paraan at pagkatapos ay i-inject ito. Tingnan natin ang isang halimbawa. Ang bawat empleyado ay may pagkamamamayan at suweldo. At hayaang tukuyin ang mga entity na ito sa klase ng HiringDepartment. Sabihin natin ito: Listahan 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;
    }
}
Dito nagdagdag kami ng 2 field. int salary at String citizenship . Tinukoy din namin ang mga getter at setter para sa mga bagay na ito. Bilang paalala, ang Spring ay tumutukoy sa mga getter at setter na ito sa likod ng mga eksena upang itali ang mga halaga sa mga bagay ng klase. Hindi pa kami gumagalaw sa ibang klase. At pagkatapos ay gagawin namin muli ang applicationContext file, na tumutukoy sa mga beans para sa aming mga bagay. At ganito ang hitsura: Listahan 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>
Hindi tulad ng Listahan 1, dalawa pang property ang naidagdag dito (linya 12 at 13). Dito pumapasok ang value attribute , na tinukoy sa loob ng property tag. Paalalahanan ko kayong muli na ang halaga ng katangian ng pangalan ay dapat tumugma sa bagay na tinutukoy ng bean. At pagkatapos ay malayang tinutukoy ng Spring ang mga getter at setter gamit ang mga value na ito. At gamit ang value attribute ipinapatupad namin ang mga value para sa mga field. Tandaan na ang parehong mga halaga ng halaga ay tinukoy sa mga panipi, kahit na ito ay hindi karaniwan para sa uri ng int. Ngunit ang Spring, gaya ng dati, ay tumutukoy kung aling value ang dapat iugnay sa kung anong uri. Nangyayari ito dahil sa katangian ng pangalan . Sa pangalan ng bean, ang Spring ay tumutukoy sa isang bagay ng klase at tinutukoy ang uri ng bagay na ito. Well, yun lang. Ngayon ang natitira na lang ay suriin ang aming mga update sa Pangunahing klase: Listahan 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(); //Контекст всегда должен закрываться
    }
}
Hindi na kailangang magbago ng marami dito. Para lamang makakuha ng mga resulta, tinatawagan namin ang mga getter ng klase ng HiringDepartment gamit ang karaniwang output stream. Bilang resulta, nakukuha namin ang sumusunod na sagot:

Name: Alexa
Job: Middle Java developer
Citizenship: USA
Salary: 5000
OK. Sabihin nating mayroon tayong 10 ganoong empleyado na may parehong pagkamamamayan at tumatanggap ng parehong suweldo. At sabihin nating nagpasya ang kumpanya na taasan ang kanilang mga suweldo. Pagkatapos ay kailangan mong manu-manong baguhin ang lahat ng 10 halagang ito. Sobrang boring. Paano kung tukuyin natin ang mga halagang ito sa isang hiwalay na file at iugnay ang mga halagang ito sa mga beans? Pagkatapos ay kailangan lang nating baguhin ang halaga nang isang beses sa file na ito, at ang natitirang mga beans na tumutukoy sa halagang ito ay awtomatikong magbabago. Subukan natin ito... Para magawa ito, gagawa kami ng ilang update sa istruktura ng proyekto at sa applicationContext.xml file. Una, sa folder ng resources, magdagdag ng bagong file na may extension na .properties . Pinangalanan ko ang file na ito na "myApp.properties". Ngayon ang istraktura ng proyekto ay kinuha sa sumusunod na anyo: tagsibol.  Aralin 4. Ang katangian ng halaga para sa pag-embed ng mga halaga - 1 At sa file ay isusulat namin ang mga sumusunod na halaga:

employee.citizenship="Russia"
employee.salary=6000
Sa kaliwa ng sign na "=" ay ang mga pangalan ng mga variable (kung matatawag silang ganyan), at sa kanan ay ang mga halaga ng mga variable na ito. Maaari mong ibigay ang pangalan kahit anong gusto mo, ngunit gaya ng dati, may kahulugan. At oo, ang panahon dito ay gumaganap ng isang madiskarteng papel, hindi isang syntactic. Sabihin na nating may mga manager din tayo, may sarili ding sweldo. Pagkatapos ay maaari nating pangalanan ang mga variable na ito tulad nito: manager.salary. Iyon ay, ang mga pangalan ng mga variable ay hindi magkakasabay at makagambala sa bawat isa. Ngayon, i-update natin ang applicationContext.xml file. Bago magdeklara ng beans, dapat mong isulat ang sumusunod na linya:

<context:property-placeholder location="classpath:myApp.properties"/>
Dito namin tinutukoy ang file na ginawa namin upang i-embed ang mga halaga. At pagkatapos ay sa value attribute naglalagay kami ng dollar sign na $ sa double quotes at sa curly brackets {} isinusulat namin ang pangalan ng variable mula sa myApp.properties file:

<property name="salary" value="${employee.salary}"/>
Bilang resulta, tinitingnan ng Spring ang variable na ito, nakukuha ang halaga nito, at ikinakabit ito sa object ng klase. Ang kumpletong code ay ganito ang hitsura: Listahan 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>
Ilunsad natin ang programa:

Name: Alexa
Job: Middle Java developer
Citizenship: "Russia"
Salary: 6000
Gaya ng nakasanayan, ang pinakamahusay na paraan upang matuto ng programming ay ang magprograma. Ulitin ang iyong natutunan sa iyong sarili, subukang i-update ang mga elemento, paglaruan ang code. In short, go for it. At iyon lang para sa akin. Salamat sa iyong atensyon! Source code sa link My GitHub Sumali sa aking telegram channel Ang nilalaman ng kurso ay ipagpapatuloy...
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION