JavaRush /Блог /Random /Spring. Урок 1. IoC / DI
Umaralikhon
3 уровень
Красноярск

Spring. Урок 1. IoC / DI

Статья из группы Random
И так... Для изучения Spring`а потребуется знания Java core, Intellij IDEA Ultimate и немного терпения. Курс будет состоят из нескольких занятий. Каждое занятие будет описывать отдельную тему. Так же я очень посоветовал бы писать конспекты. Да, никто за это вам не поставит зачет за семестр. Просто при написании конспекта работают все части мозга, предназначенные для запоминания информации. Хватит воды. Начинаем. Inversion of Control (IoC) && Dependency Injection (DI) Для начала определим две самые важные термины, как Инверсия управления - Inversion of Control (IoC) и Внедрение зависимостей - Dependency Injection (DI). IoC - это принцип ООП, используемый для уменьшения связанности между классами и объектами. Программист в нужные точки программы разместит необходимый код и не волнуется как и когда должен работать размещенный код. Говоря простым языком, при использовании IoC кодом будет управлять фреймворк а не программист. DI - делает объекты приложения слабо зависимым друг от друга. То есть об инициализации объектов будет заботится внешний механизм разработанный программистом. При использовании DI программист будет работать не на "уровне классов" а на "уровне интерфейсов". Таким образом зависимости между объектами будут сведены к минимуму. Попрактикуемся Для начала создадим простой maven проект. Для этого выбираем пункт "Create new Project" и из меню выбирает "Maven": Курс Spring - IoC / DI - 1 В остальных частях можно оставить дефолтные значения либо изменить по своему усмотрению (кроме версии): Курс Spring - IoC / DI - 2 После чего откроется проект примерно с такой структурой: Курс Spring - IoC / DI - 3 В папке main хранятся пакеты, коды и файлы для работы основной части программы. В пакетах (в нашем случае org.example) будет хранится Java - код. Папка resources будет содержат конфигурационные файлы или файлы - ресурсы. Именно в этой папке мы создадим файл applicationContext.xml, в котором будем описать наши бины(об этом чуть позже) . В папке Test будет хранится классы с тестированием. Мы не будем затрагивать эту тему. Один из самых важных файлов является файл pom.xml. В этом файле будут описываться Spring - зависимости для нашего проекта. Именно с этого файла мы и начнем работу. Для начала откроем этот файл. Файл будет иметь примерно такой вид:

<?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>
В этот файл будем добавлять необходимые зависимости (dependencies). Для этого переходим на сайт mvnrepository.com, в котором находятся все зависимости для управления maven проектом. В поисковой части набираем "Spring context". Среди списка результатов выбираем "Spring context" (именно "Spring context" от apache а не другое). Затем выбираем версию, желательно RELEASE версию. После чего откроется примерно следующее окно: Курс Spring - IoC / DI - 5 Нас интересует та часть, которая выделена красным цветом. Скопируем код и вставляем внутри тега <dependencies> </dependencies>. Такие же действия производим и для зависимостей "Spring bean" и "Spring core". В итоге файл 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 хранится все базовые операции для работы фреймворка. Spring context - создает и хранит объекты классов для работы DI / IoC. А Spring beans служит для создания бинов. О бинах расскажу чуть позже. После добавления зависимостей на правом верхнем углу появится значок: Курс Spring - IoC / DI - 6 Нажимаем на него и ждем пока Idea загрузит все эти зависимости. После загрузки в папке проекта "External Libraries" можем увидеть скачанные .jar файлы в которых содержатся Spring - зависимости: Курс Spring - IoC / DI - 7 На этом заканчиваем первый урок нашего курса. Таким образом мы коротко узнали:
  • Что такое IoC / DI
  • Как создать Spring проекты
  • Как их настроить
Полный исходной код можете найти по ссылке. Мой GitHub аккаунт Содержание курса Продолжение следует...
Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Aleksandr Уровень 10
20 июня 2023
в pom.xml строки 13-17 и 10-24 одинаковые, не подключена зависимость spring-core, вместо этого дважды прописана зависимость spring-context
Nick Уровень 20
20 июня 2021

<artifactId>spring-context</artifactId>
Два раза context написал, в замен core
Павел Уровень 11
29 мая 2021
Я бы поправку внёс: не обязательно версия Intellij IDEA должна быть Ultimate, что бы использовать Spring. По оформлению: лучше содержимое pom файла оформить как

Блок кода
И вопрос: вы будете дальше 11 Java использовать? А в целом, продолжайте писать, начало не плохое.