Что такое Spring

  • Рубрика записи:Spring back-end

Spring – это фреймворк (инструмент) для разработки Java-приложений. Его цель – облегчить создание сложных приложений, предоставив готовые решения для распространённых задач. Вы не будете руками прописывать одно и то же каждый раз, когда решаете однотипную задачу. Spring сделает это за вас.

Мы с вами будем использовать Spring для разработки Web-приложения, а вернее, его “задней” части – back-end. Эта часть отвечает за бизнес-логику приложения.

Идеология Spring Framework

Spring Framework является основой для всех других проектов Spring. Такие проекты, как Spring Boot, Spring Data и так далее — всё это создано на основе Spring. Spring Framework предоставляет базу для создания приложений.

Зависимость Spring можно добавить в проект, указав в файле сборщика Maven или Gradle соответствующую dependency. Однако в наши дни даже это не требуется, если вы используете Spring Boot, который помогает в создании проектов.

Две основные идеи Spring – инверсия управления (Inversion of Control, IoC) и внедрение зависимостей (Dependency Injection, DI).

Inversion of Control

Inversion of Control, инверсия управления – это перекладывание ответственности с разработчика на фреймворк. Это принцип, при котором не код, написанный разработчиком, управляет созданием объектов и вызовами функций, а фреймворк управляет жизненным циклом и взаимодействием объектов. Вследствие чего, IoC делает компоненты более независимыми.

Dependency Injection

Dependency Injection, внедрение зависимостей – это конкретный подход к реализации IoC, при котором компонент получает свои зависимости (другие объекты, которые он использует) не создавая их сам, а получая их извне. То есть Spring управляет зависимостями объектов, внедряя их в код.

Пример

Далеко ходить за примерами не надо. У вас есть несколько классов, управляющих объектами в базе данных. Пускай это будут UserDao и MessageDao. UserDao связан с таблицей users, а MessageDao – с таблицей messages. Вероятно, для правильной работы этих классов каждому из них жизненно необходимо соединение с базой данных. Оно реализуется с помощью объекта подключения к БД.

Однако вот в чём загвоздка. Не будем же мы в обоих этих классах одинаково создавать и настраивать объект подключения к БД? Причём, это не только повторение кода, что некрасиво, так ещё и ресурсозатратно. Лучше создать один объект подключения к БД и использовать его повторно по мере необходимости, не создавая каждый раз новый.

Так вот: в этом случае спасает Dependency Injection, внедрение зависимостей. Благодаря Spring Framework можно не париться о том, куда, когда и как передавать зависимости. Мы можем просто написать, что такому-то классу нужна такая-то зависимость (объект). В таком случае Spring сам создаст его экземпляр в своём контейнере. Причём он будет предоставлять этот объект во все классы, которые сообщили, что он им нужен.

Таким образом, проект становится более чистым, читаемым и особенно удобным к изменениям.

Spring Data

Spring Data – это проект, упрощающий взаимодействие с различными источниками данных, такими как базы данных. Он минимизирует написание кода для доступа к данным. Не нужно писать подобные SQL-запросы руками:

Ведь со Spring Data нет нужды реализовывать множество однотипных методов для создания, чтения, изменения или удаления записей в таблицах. Они уже есть, только адаптируются под создаваемые разработчиком объекты. Небольшой пример репозитория, управляющего данными пользователей:

Здесь первый тип в треугольных кавычках (<User, Long>) задаёт тип объектов, которые будут представлять строки в таблице (здесь это тип User). Второй тип задаёт тип идентификатора, то есть поля id (здесь задан тип Long). Настроив и подключив БД к проекту, мы сможем легко управлять всеми этими данными.

Java Persistence API (JPA)

Java Persistence API — это стандартный интерфейс для управления тем, каким образом объекты из Java-приложений должны быть представлены в таблицах в БД. JPA позволяет Java-разработчикам работать с базами данных, используя объектно-ориентированный подход. То есть одна таблица – один класс. Одна строка таблицы – один объект.

JPA – это идея. Конкретные реализации JPA – это Hibernate, EclipseLink, OpenJPA и другие. Нас интересует Hibernate.

Hibernate

Hibernate – это конкретная реализация JPA. Он обеспечивает конвертацию между объектами Java и записями в базе данных. Более того, Spring Data может интегрироваться с Hibernate для удобной работы с базой данных.

Hibernate позволяет легко представлять таблицы из базы данных в виде Java-объектов. Небольшой пример:

Здесь класс User представляет собой запись из таблицы users, которая в общей сложности имеет три столбца: id, login и email.

Вперёд к приключениям со Spring Framework! В следующих статьях этого раздела мы напишем полноценный back-end простого Web-приложения. А вместе с такими утилитами, как Lombok, код будет становиться ещё более лаконичным и симпатичным.

Добавить комментарий