JavaRush /ื‘ืœื•ื’ Java /Random-HE /ืื‘ื™ื‘. ืฉื™ืขื•ืจ 1. IoC/DI
Umaralikhon
ืจึธืžึธื”
ะšั€ะฐัะฝะพัั€ัะบ

ืื‘ื™ื‘. ืฉื™ืขื•ืจ 1. IoC/DI

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ื•ื›ืš... ื›ื“ื™ ืœืœืžื•ื“ ืืช Spring ืชื–ื“ืงืง ืœื™ื“ืข ื‘ืœื™ื‘ืช Java, Intellij IDEA Ultimate ื•ืงืฆืช ืกื‘ืœื ื•ืช. ื”ืงื•ืจืก ื™ื›ืœื•ืœ ืžืกืคืจ ืฉื™ืขื•ืจื™ื. ื›ืœ ืฉื™ืขื•ืจ ื™ืขืกื•ืง ื‘ื ื•ืฉื ืื—ืจ. ืื ื™ ื’ื ืžืžืœื™ืฅ ื‘ื—ื•ื ืœื›ืชื•ื‘ ื”ืขืจื•ืช. ื›ืŸ, ืืฃ ืื—ื“ ืœื ื™ื™ืชืŸ ืœืš ืงืจื“ื™ื˜ ืขื‘ื•ืจ ื”ืกืžืกื˜ืจ ืขืœ ื–ื”. ืจืง ืฉื›ืืฉืจ ื›ื•ืชื‘ื™ื ื”ืขืจื•ืช, ื›ืœ ื—ืœืงื™ ื”ืžื•ื— ืฉื ื•ืขื“ื• ืœื–ื›ื•ืจ ืžื™ื“ืข ืขื•ื‘ื“ื™ื. ืžืกืคื™ืง ืžื™ื. ื”ืชื—ืœ. ื”ื™ืคื•ืš ืฉืœื™ื˜ื” (IoC) && ื”ื–ืจืงืช ืชืœื•ืช (DI) ืจืืฉื™ืช, ื”ื‘ื” ื ื’ื“ื™ืจ ืืช ืฉื ื™ ื”ืžื•ื ื—ื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ื›ื”ื™ืคื•ืš ืฉืœื™ื˜ื” (IoC) ื•-Dependency Injection (DI). IoC ื”ื•ื ืขืงืจื•ืŸ OOP ื”ืžืฉืžืฉ ืœื”ืคื—ืชืช ืฆื™ืžื•ื“ ื‘ื™ืŸ ืžื—ืœืงื•ืช ื•ืื•ื‘ื™ื™ืงื˜ื™ื. ื”ืžืชื›ื ืช ื™ืฆื™ื‘ ืืช ื”ืงื•ื“ ื”ื“ืจื•ืฉ ื‘ื ืงื•ื“ื•ืช ื”ื ื›ื•ื ื•ืช ื‘ืชื•ื›ื ื™ืช ื•ืื™ื ื• ื“ื•ืื’ ื›ื™ืฆื“ ื•ืžืชื™ ื”ืงื•ื“ ืฉื”ื•ืฆื‘ ืืžื•ืจ ืœืขื‘ื•ื“. ื‘ืžื™ืœื™ื ืคืฉื•ื˜ื•ืช, ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-IoC, ื”ืงื•ื“ ื™ื ื•ื”ืœ ืขืœ ื™ื“ื™ ื”ืžืกื’ืจืช ื•ืœื ืขืœ ื™ื“ื™ ื”ืžืชื›ื ืช. DI - ื”ื•ืคืš ืืช ืื•ื‘ื™ื™ืงื˜ื™ ื”ื™ื™ืฉื•ื ืœืชืœื•ื™ื™ื ื—ืœืฉ ื–ื” ื‘ื–ื”. ื›ืœื•ืžืจ, ืžื ื’ื ื•ืŸ ื—ื™ืฆื•ื ื™ ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ื”ืžืชื›ื ืช ื™ื“ืื’ ืœืืชื—ื•ืœ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื. ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-DI, ื”ืžืชื›ื ืช ื™ืขื‘ื•ื“ ืœื ื‘"ืจืžืช ื”ื›ื™ืชื”" ืืœื ื‘"ืจืžืช ื”ืžืžืฉืง". ื‘ื“ืจืš ื–ื•, ืชืœื•ืช ื‘ื™ืŸ ืื•ื‘ื™ื™ืงื˜ื™ื ืชื™ืฉืžืจ ืœืžื™ื ื™ืžื•ื. ื‘ื•ืื• ื ืชืืžืŸ ืจืืฉื™ืช, ื‘ื•ืื• ื ื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ืžื™ื™ื‘ืŸ ืคืฉื•ื˜. ืœืฉื ื›ืš, ื‘ื—ืจ ื‘ืคืจื™ื˜ "ืฆื•ืจ ืคืจื•ื™ืงื˜ ื—ื“ืฉ" ื•ื‘ื—ืจ "Maven" ืžื”ืชืคืจื™ื˜: ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 1 ื‘ื—ืœืงื™ื ื”ื ื•ืชืจื™ื, ืชื•ื›ืœ ืœื”ืฉืื™ืจ ืืช ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืื• ืœืฉื ื•ืช ืื•ืชื ืœืคื™ ืฉื™ืงื•ืœ ื“ืขืชืš (ืœืžืขื˜ ื”ื’ืจืกื”): ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 2 ืœืื—ืจ ืžื›ืŸ ื”ืคืจื•ื™ืงื˜ ื™ื™ืคืชื— ื‘ืขืจืš ืขื ื”ืžื‘ื ื” ื”ื‘ื: ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 3 ื”ืชื™ืงื™ื” ื”ืจืืฉื™ืช ืžืื—ืกื ืช ื—ื‘ื™ืœื•ืช ื•ืงื•ื“ื™ื ื•ืงื‘ืฆื™ื ืœื”ืคืขืœืช ื”ื—ืœืง ื”ืขื™ืงืจื™ ืฉืœ ื”ืชื•ื›ื ื™ืช. ื—ื‘ื™ืœื•ืช (ื‘ืžืงืจื” ืฉืœื ื• org.example) ื™ืื—ืกื ื• ืงื•ื“ Java. ืชื™ืงื™ื™ืช ื”ืžืฉืื‘ื™ื ืชื›ื™ืœ ืงื•ื‘ืฆื™ ืชืฆื•ืจื” ืื• ืงื‘ืฆื™ ืžืฉืื‘ื™ื. ื‘ืชื™ืงื™ื™ื” ื–ื• ื ื™ืฆื•ืจ ืืช ื”ืงื•ื‘ืฅ applicationContext.xml, ืฉื‘ื• ื ืชืืจ ืืช ื”ืฉืขื•ืขื™ืช ืฉืœื ื• (ืขื•ื“ ืขืœ ื›ืš ื‘ื”ืžืฉืš). ืชื™ืงื™ื™ืช ื”ื‘ื“ื™ืงื” ืชื›ื™ืœ ืฉื™ืขื•ืจื™ ื‘ื“ื™ืงื”. ืœื ื ื™ื’ืข ื‘ื ื•ืฉื ื–ื”. ืื—ื“ ื”ืงื‘ืฆื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ื”ื•ื ืงื•ื‘ืฅ pom.xml. ืงื•ื‘ืฅ ื–ื” ื™ืชืืจ ืืช ื”ืชืœื•ืช ื‘ืื‘ื™ื‘ ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜ ืฉืœื ื•. ืขื ื”ืงื•ื‘ืฅ ื”ื–ื” ื ืชื—ื™ืœ ืืช ืขื‘ื•ื“ืชื ื•. ืจืืฉื™ืช, ื‘ื•ืื• ื ืคืชื— ืืช ื”ืงื•ื‘ืฅ ื”ื–ื”. ื”ืงื•ื‘ืฅ ื™ื™ืจืื” ื‘ืขืจืš ื›ืš:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>IoC</artifactId>
    <version>1.0-SNAPSHOT</version>

  <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

</project>
ื ื•ืกื™ืฃ ืืช ื”ืชืœื•ืช ื”ื ื“ืจืฉืช ืœืงื•ื‘ืฅ ื–ื”. ืœืฉื ื›ืš, ืขื‘ื•ืจ ืืœ ื”ืืชืจ mvnrepository.com , ื”ืžื›ื™ืœ ืืช ื›ืœ ื”ืชืœื•ืช ืœื ื™ื”ื•ืœ ืคืจื•ื™ืงื˜ maven. ื‘ื—ืœืง ื”ื—ื™ืคื•ืฉ ื ืงืœื™ื“ "ื”ืงืฉืจ ืื‘ื™ื‘ื™". ื‘ื™ืŸ ืจืฉื™ืžืช ื”ืชื•ืฆืื•ืช, ื‘ื—ืจ "ื”ืงืฉืจ ืื‘ื™ื‘ื™" (ื›ืœื•ืžืจ "ื”ืงืฉืจ ืื‘ื™ื‘" ืž-apache ื•ืœื ืžืฉื”ื• ืื—ืจ). ืœืื—ืจ ืžื›ืŸ ื‘ื—ืจ ืืช ื”ื’ืจืกื”, ืจืฆื•ื™ ืืช ื’ืจืกืช ื”-RELEASE. ืœืื—ืจ ืžื›ืŸ ื™ื™ืคืชื— ื”ื—ืœื•ืŸ ื”ื‘ื: ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 5 ืื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ื—ืœืง ื”ืžื•ื“ื’ืฉ ื‘ืื“ื•ื. ื‘ื•ืื• ื ืขืชื™ืง ืืช ื”ืงื•ื“ ื•ื ื“ื‘ื™ืง ืื•ืชื• ื‘ืชื•ืš ื”ืชื’ <dependencies> </dependencies>. ืื ื• ืžื‘ืฆืขื™ื ืืช ืื•ืชืŸ ืคืขื•ืœื•ืช ืขื‘ื•ืจ ื”ืชืœื•ืช ืฉืœ "ืฉืขื•ืขื™ืช ืื‘ื™ื‘" ื•"ืœื™ื‘ืช ืื‘ื™ื‘". ื›ืชื•ืฆืื” ืžื›ืš, ืงื•ื‘ืฅ pom.xml ืืžื•ืจ ืœื”ื™ืจืื•ืช ื›ืš:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>IoC</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

</project>
ื‘ืงืฆืจื” ืขืœ ื”ื›ืœ. Spring core ืžืื—ืกืŸ ืืช ื›ืœ ื”ืคืขื•ืœื•ืช ื”ื‘ืกื™ืกื™ื•ืช ื›ื“ื™ ืฉื”ืžืกื’ืจืช ืชืขื‘ื•ื“. ืงืคื™ืฆื™ ื”ืงืฉืจ - ื™ื•ืฆืจ ื•ืžืื—ืกืŸ ืื•ื‘ื™ื™ืงื˜ื™ ื›ื™ืชื” ืœืขื‘ื•ื“ืช DI/IoC. ื•ืฉืขื•ืขื™ืช ืื‘ื™ื‘ ืžืฉืžืฉืช ืœื™ืฆื™ืจืช ืฉืขื•ืขื™ืช. ืื ื™ ืืกืคืจ ืœืš ืขืœ ื”ืคื—ื™ื ืงืฆืช ืžืื•ื—ืจ ื™ื•ืชืจ. ืœืื—ืจ ื”ื•ืกืคืช ืชืœื•ืช, ื™ื•ืคื™ืข ืื™ื™ืงื•ืŸ ื‘ืคื™ื ื” ื”ืฉืžืืœื™ืช ื”ืขืœื™ื•ื ื”: ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 6 ืœื—ืฅ ืขืœื™ื• ื•ื”ืžืชืŸ ืขื“ ืฉ-Idea ืชื•ืจื™ื“ ืืช ื›ืœ ื”ืชืœื•ืช ื”ืœืœื•. ืœืื—ืจ ื”ื”ื•ืจื“ื”, ื‘ืชื™ืงื™ื™ืช ื”ืคืจื•ื™ืงื˜ "ืกืคืจื™ื•ืช ื—ื™ืฆื•ื ื™ื•ืช" ื ื•ื›ืœ ืœืจืื•ืช ืืช ืงื‘ืฆื™ ื”-.jar ืฉื”ื•ืจื“ืช ื”ืžื›ื™ืœื™ื ื™ื—ืกื™ ืชืœื•ืช ื‘ืื‘ื™ื‘: ืงื•ืจืก ืื‘ื™ื‘ - IoC/DI - 7 ื‘ื›ืš ืžืกืชื™ื™ื ื”ืฉื™ืขื•ืจ ื”ืจืืฉื•ืŸ ืฉืœ ื”ืงื•ืจืก ืฉืœื ื•. ื›ืš ืœืžื“ื ื• ื‘ืงืฆืจื”:
  • ืžื” ื–ื” IoC/DI
  • ื›ื™ืฆื“ ืœื™ืฆื•ืจ ืคืจื•ื™ืงื˜ื™ื ืฉืœ ืื‘ื™ื‘
  • ืื™ืš ืœื”ื’ื“ื™ืจ ืื•ืชื
ืืช ืงื•ื“ ื”ืžืงื•ืจ ื”ืžืœื ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงื™ืฉื•ืจ ื”ื–ื” . ื—ืฉื‘ื•ืŸ GitHub ืฉืœื™ ืชื•ื›ืŸ ื”ืงื•ืจืก ืœื”ืžืฉืš...
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION