Cats in the spring.Scottish fold gray cat in a sunny spring blooming garden.
Содержание
Фреймворк Spring упрощает и ускоряет программирование на Java. Это очень популярный Java-фреймворк.
Spring — это фреймворк с открытым исходным кодом. Он написан Родом Джонсоном и выпущен в 2003 году по лицензии Apache 2.0.
Spring позволяет создавать приложения из обычных объектов Java (plain old Java objects, POJO) и применять к ним корпоративные сервисы. Эта возможность относится к модели программирования Java SE и полностью или частично — к Java EE.
Приложения Java обычно состоят из объектов, которые работают совместно. Таким образом объекты приложения находятся в зависимости друг от друга.
Инверсия управления (Inversion of Control, IoC) предоставляет стандартизированные способы компоновки отдельных объектов в полностью готовое к работе приложение. Шаблоны проектирования представлены в этом фреймворке как объекты первого класса, которые можно интегрировать в собственное приложение.
Еще одна концепция, лежащая в основе Spring Framework — аспектно-ориентированное программирование (Aspect Oriented Programming, AOP).
В большинстве корпоративных приложений реализованы общие понятия, касающиеся различных типов объектов и модулей. Это, например, ведение журналов, управление транзакциями, проверка данных и т. п.
В объектно-ориентированном программировании модульность приложения достигается за счет классов, а в аспектно-ориентированном — за счет аспектов.
Spring AOP устраняет зависимости общих задач от классов, чего невозможно достичь при использовании обычной модели объектно-ориентированного программирования.
Например, может существовать отдельный класс для ведения журналов, а функциональные классы должны будут вызывать эти методы для заполнения журналов.
Ниже описаны основные концепции AOP.
Aspect | Аспект — это класс, реализующий понятия, общие для множества классов, например, управление транзакциями. Аспекты могут быть обычными классами, настраиваемыми с использованием XML-конфигурации Spring. Также можно воспользоваться интеграцией Spring AspectJ, чтобы определить класс как аспект с помощью аннотации @Aspect. |
Join point | Точка соединения — это определенная точка в приложении. В Spring AOP точка соединения всегда означает выполнение метода. |
Advice | Рекомендации — это методы, выполняемые по достижении определенной точки соединения с совпадающим набором точек соединения. |
Pointcut | Набор точек соединения — выражение, сопоставленное с точками соединения, и определяющее, следует ли выполнять рекомендацию. Для этих выражений в Spring используется язык выражений AspectJ. |
Target Object | Это целевые объекты, к которым применяются рекомендации. Spring AOP реализуется с использованием прокси времени выполнения, потому такой объект всегда доступен через прокси. Это значит, что подкласс создается во время выполнения, целевой метод переопределяется и в него включается рекомендация в зависимости от конфигурации. |
Прокси AOP | Реализация AOP в Spring использует динамический прокси JDK для создания прокси-классов для целевых классов и вызова рекомендаций. Такие классы называются прокси-классами AOP. |
Weaving | Это процесс связывания аспектов с другими объектами для создания прокси-объектов с рекомендациями. Это может делаться во время компиляции, загрузки или выполнения. Spring AOP выполняет связывание во время выполнения. |
Spring Framework — это платформа для разработки, состоящая из множества мини-платформ, библиотек и расширений. Одно из ее расширений — Spring Boot. Spring Boot упрощает и ускоряет работу со Spring.
Расширение Spring Boot упрощает процесс настройки приложения за счет предварительно настроенных компонентов. Оно больше подходит для создания микросервисов и облачных приложений благодаря своей облегченной архитектуре и быстрому запуску.
С помощью Spring Boot можно с легкостью создавать автономные приложения производственного уровня на основе Spring, которые можно «просто запустить». Благодаря мощным функциям и простоте использования этого расширения многие разработчики выбирают его для создания веб- или мобильных приложений.
Если вам не требуется особо уникальная конфигурация, то для создания проекта можно использовать Spring Boot. Для добавления зависимостей вы можете воспользоваться системой аннотаций Spring Framework. При этом у вас останется доступ ко всем возможностям Spring Framework.
В этой статье мы рассмотрим процесс создания и запуска простейшего приложения на Spring.
Spring поддерживается многими средами разработки (IDE). Чаще всего используются IntelliJ IDEA, Spring Tools для различных IDE, Visual Studio Code, Eclipse и многие другие. Подробные инструкции по загрузке, установке и настройке вы найдете на сайтах IDE.
Что касается Java™ Development Kit (JDK), для разработки на Spring рекомендуется использовать BellSoft Liberica JDK версии 17. Скачайте и установите дистрибутив для своей операционной системы.
Откройте сайт start.spring.io, чтобы создать веб-проект:
Работа с IDE
Если вы пользуетесь IDE с поддержкой Spring, то создать каркас проекта можно в IDE.
Предварительные требования
Для разработки приложения Spring Boot в Visual Studio Code потребуется установить следующее:
Создание проекта
Расширение Spring Initializr позволяет находить зависимости и генерировать новые проекты Spring Boot.
После установки Spring Boot Extension Pack откройте палитру команд (Command Palette, Ctrl+Shift+P), введите Spring Initializr, чтобы начать генерировать проект Maven или Gradle, и выполните инструкции мастера.
Hello
В этой статье мы воспользуемся примером с официального сайта.
Откройте файл DemoApplication.java
, расположенный в каталоге src/main/java/com/example/demo
.
Добавьте в него аннотации и метод, как указано ниже:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("/hello") public String hello(@RequestParam(value = "name", defaultValue = "World") String name) { return String.format("Hello %s!", name); } }
Метод hello()
принимает строковой аргумент name
, а затем комбинирует его со словом Hello
в коде. Если в запросе будет указано имя Nika
, то ответ будет таким: Hello Nika
.
Аннотация @RestController
указывает Spring, что этот код описывает конечную точку, которая будет доступна в сети. @GetMapping(“/hello”)
указывает, что для ответа на запросы, отправляемые по адресу http://localhost:8080/hello
, нужно вызывать метод hello()
.
Аннотация @RequestParam
указывает Spring, что в запросе может быть указано значение параметра name
, но если оно не указано, то вместо него по умолчанию будет использоваться слово World
.
Откройте папку проекта (например, demo) и запустите команду:
Linux:
./mvnw spring-boot:run
Windows:
mvnw.cmd spring-boot:run
Результат:
Последние две строки говорят о том, что Spring запущен. Встроенный в Spring Boot сервер Apache Tomcat работает как веб-сервер и перехватывает запросы, отправляемые на порт 8080 локального хоста.
Откройте веб-браузер и в адресной строке введите http://localhost:8080/hello
.
Вы увидите такой ответ:
Если же в адресе мы укажем параметр name
и его значение (добавим ?name=Nika
в конце адреса), то получим такой ответ:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…