Решение для всех, связанных со Spring технологий, избавляя программиста от лишнего поиска примеров кода и загрузки из них требуемых дескрипторов зависимостей (пример таких дескрипторов и стартовых пакетов будет показан ниже)
Скачать 40.84 Kb.
|
Рассказать, как работает Spring Boot, для чего он нужен, какая от него польза?Spring Boot — это полезный проект, целью которого является упрощение создания приложений на основе Spring. Он позволяет наиболее простым способом создать web-приложение, требуя от разработчиков минимум усилий по его настройке и написанию кода Особенности Spring BootSpring Boot обладает большим функционалом, но его наиболее значимыми особенностями являются: управление зависимостями, автоматическая конфигурация и встроенные контейнеры сервлетов 2.1. Простота управления зависимостямиЧтобы ускорить процесс управления зависимостями, Spring Boot неявно упаковывает необходимые сторонние зависимости для каждого типа приложения на основе Spring и предоставляет их разработчику посредством так называемых starter-пакетов (spring-boot-starter-web, spring-boot-starter-data-jpa и т.д.) Starter-пакеты представляют собой набор удобных дескрипторов зависимостей, которые можно включить в свое приложение. Это позволит получить универсальное решение для всех, связанных со Spring технологий, избавляя программиста от лишнего поиска примеров кода и загрузки из них требуемых дескрипторов зависимостей (пример таких дескрипторов и стартовых пакетов будет показан ниже) Например, если вы хотите начать использовать Spring Data JPA для доступа к базе данных, просто включите в свой проект зависимость spring-boot-starter-data-jpa и все будет готово (вам не придется искать совместимые драйверы баз данных и библиотеки Hibernate) Если вы хотите создать Spring web-приложение, просто добавьте зависимость spring-boot-starter-web, которая подтянет в проект все библиотеки, необходимые для разработки Spring MVC-приложений, таких как spring-webmvc, jackson-json, validation-api и Tomcat Другими словами, Spring Boot собирает все общие зависимости и определяет их в одном месте, что позволяет разработчикам просто использовать их, вместо того, чтобы изобретать колесо каждый раз, когда они создают новое приложение Следовательно, при использовании Spring Boot, файл pom.xml содержит намного меньше строк, чем при использовании его в Spring-приложениях 2.2. Автоматическая конфигурацияВторой превосходной возможностью Spring Boot является автоматическая конфигурация приложения После выбора подходящего starter-пакета, Spring Boot попытается автоматически настроить Spring-приложение на основе добавленных вами jar-зависимостей Например, если вы добавите Spring-boot-starter-web, Spring Boot автоматически сконфигурирует такие зарегистрированные бины, как DispatcherServlet, ResourceHandlers, MessageSource Если вы используете spring-boot-starter-jdbc, Spring Boot автоматически регистрирует бины DataSource, EntityManagerFactory, TransactionManager и считывает информацию для подключения к базе данных из файла application.properties Если вы не собираетесь использовать базу данных, и не предоставляете никаких подробных сведений о подключении в ручном режиме, Spring Boot автоматически настроит базу в памяти, без какой-либо дополнительной конфигурации с вашей стороны (при наличии H2 или HSQL библиотек) Автоматическая конфигурация может быть полностью переопределена в любой момент с помощью пользовательских настроек 2.3. Встроенная поддержка сервера приложений — контейнера сервлетов Каждое Spring Boot web-приложение включает встроенный web-сервер. Посмотрите на список контейнеров сервлетов, которые поддерживаются "из коробки" Разработчикам теперь не надо беспокоиться о настройке контейнера сервлетов и развертывании приложения на нем. Теперь приложение может запускаться само, как исполняемый jar-файл с использованием встроенного сервера Если вам нужно использовать отдельный HTTP-сервер, для этого достаточно исключить зависимости по умолчанию. Spring Boot предоставляет отдельные starter-пакеты для разных HTTP-серверов Создание автономных web-приложений со встроенными серверами не только удобно для разработки, но и является допустимым решением для приложений корпоративного уровня и становится все более полезно в мире микросервисов. Возможность быстро упаковать весь сервис (например, аутентификацию пользователя) в автономном и полностью развертываемом артефакте, который также предоставляет API — делает установку и развертывание приложения значительно проще Рассказать, как Spring Boot понимает какую версию зависимостей подгружать.Spring Boot автоматически настраивает ваше приложение на основе зависимостей, которые вы добавили в проект, используя аннотацию @EnableAutoConfiguration . Например, если база данных MySQL находится на вашем пути к классам, но вы не настроили соединение с базой данных, Spring Boot автоматически конфигурирует базу данных в памяти. Если вы добавили аннотацию @SpringBootApplication в класс, вам не нужно добавлять аннотации @EnableAutoConfiguration, @ComponentScan и @SpringBootConfiguration . Аннотация @SpringBootApplication включает в себя все остальные примечания. Можно ли указать свою версию той или иной зависимости и как?или <version>1.4.1.RELEASEversion> Перевести запросы в базу данных на Spring Data не используя SQL и HQL.Запросы к сущности можно строить прямо из имени метода. Для этого используется механизм префиксов find…By, read…By, query…By, count…By, и get…By, далее от префикса метода начинает разбор остальной части. Рассказать, как формируются запросы через Spring Data.доступ к данным большая часть запросов делается только к одной сущности и при этом выполняется фильтрация по значениям полей этой сущности. Описание запросов начинается с того, что объявляется интерфейс, который расширяет Repository Сам интерфейс Repository не содержит методов и если собственные методы не определить, то результат получится довольно бесполезным. Впрочем, есть уже готовые наследники Repository, которые содержат предопределённые методы. В первую очередь это CrudRepository count() — который возвращает количество объектов типа T в базе delete() — который удаляет объекты типа T из базы save() — который сохраняет объекты типа T в базу findOne() — который возвращает объект из базы по ID (или null, если вы недостаточно счастливый человек) findAll() — который возвращает все объекты типа T из базы Потом PagingAndSortingRepository Декларирование запросов Конечно, можно пользоваться и предопределёнными запросами, но хотелось бы и чего-нибудь поближе к решаемой разработчиком задаче. Запросы определяются по единому шаблону — указывается возвращаемый тип, вид запроса и список предикатов. Например: Country findOneByCodeLike(String code) List Long countByCurrencyCodeAndAccountType(String code, AccountType type) Методы запросов могут возвращать следующие типы: T — собственно тот тип, которым вы типизировали интерфейс и на который и настроен репозиторий Option Iterable Long, Integer — для методов, подсчитывающих количество объектов Stream Future
Сам запрос может начинаться с названия операции, которая должна быть выполнена: findOneBy… — Выбирает один объект findBy… — Выбирает несколько объектов countBy… — Подсчитывает количество объектов, которые соответствуют условиям. И, наконец-то, продолжается всё перечислением предикатов. Каждый предикат описывается названием поля и условием. Например выше findOneByCodeLike найдёт один объект, у которого поле code подобно (sql like) переданному параметру. Параметры передаются в том же порядке, в котором перечисляются предикаты. Самих предикатов существует довольно большое число и все они перечислены в документации на Spring Data Jpa. Я приведу наиболее часто встречающиеся: GreaterThan и GreaterThanEqual — значение должно быть более или более и равно. LessThan и LessThanEqual — значение должно быть менее или менее и равно. IsNull — значение поля должно быть null. При этом передавать параметр не требуется . Like и NotLike — значение должно быть подобно или наоборот, не подобно, параметру. Подобно в терминах SQL like. True и False — значение истинно или ложно. Параметр передавать не требуется. In — значение находится в переданном списке. Кроме того, в определение запроса можно добавлять сортировку, используя конструкции вида OrderByПолеAsc и OrderByПолеDesc, которые включаются возрастающую или убывающую сортировки по заданному полю. Таких сортировок, очевидно, может быть несколько. А там где есть стабильный порядок, определяемый сортировкой, можно задать и ограничение по количеству возвращаемых записей, используя ключевое слово first. Например List Какие методы есть в CRUD-репозитории?
Что такое Bootstrap и как он работает, какие технологии использует?Bootstrap — это открытый и бесплатный HTML, CSS и JS фреймворк, который используется веб-разработчиками для быстрой вёрстки адаптивных дизайнов сайтов и веб-приложений. Bootstrap состоит из: инструментов для создания макета (обёрточных контейнеров, мощной системы сеток, гибких медиа-объектов, адаптивных утилитных классов); классов для стилизации базового контента: текста, изображений, кода, таблиц и figure; готовых компонентов: кнопок, форм, горизонтальных и вертикальных навигационных панелей, слайдеров, выпадающих списков, аккордеонов, модальных окон, всплывающих подсказок и др.; утилитных классов для решения традиционных задач наиболее часто возникающими перед веб-разработчиками: выравнивание текста, отображение и скрытие элементов, задания цвета, фона, margin и padding отступов, и т.д. Основные инструменты Bootstrap: Сетки — заранее заданные размеры колонок, которые можно сразу же использовать, например, ширина колонки 140 px относится к классу .span2 (.col-md-2 в третьей версии фреймворка), который можно использовать в CSS-описании документа. Шаблоны — фиксированный или резиновый шаблон документа. Типографика — описания шрифтов, определение некоторых классов для шрифтов, таких как код, цитаты и т. п. Медиа — предоставляет некоторое управление изображениями и видео. Таблицы — средства оформления таблиц, вплоть до добавления функциональности сортировки. Формы — классы для оформления форм и некоторых событий, происходящих с ними. Навигация — классы оформления для панелей, вкладок, перехода по страницам, меню и панели инструментов. Алерты — оформление диалоговых окон, подсказок и всплывающих окон. Рассказать про сетку Bootstrap.Мощная система гибких сеток для мобильных устройств, для удобной верстки и расположения элементов любых видов и размеров. Используется система «12 колонок», 5-ти адаптивных ярусов, препроцессоров Sass и десятков предустановленных классов. Система сеток Bootstrap 4 использует контейнеры, ряды и колонки, чтобы удобно располагать содержимое. Бутстрап реализован с помощью флексбокса и полностью адаптивен. Правила сетки: Колонки должны быть прямыми потомками Row Row используются только для того, чтобы включать в себя колонки и не для ничего больше. Row должны быть помещены внутри контейнера Рассказать про преимущества и недостатки REST-сервисовосновной принцип проектирования REST устанавливает однозначное соответствие между операциями create, read, update и delete (CRUD) и HTTP-методами. Согласно этому соответствию: Для создания ресурса на сервере используется POST. Для извлечения ресурса используется GET. Для изменения состояния ресурса или его обновления используется PUT. Для удаления ресурса используется DELETE. Все является ресурсами с уникальным идентификатором (URL) Все операции клиента с сервером stateless, т.е. сервер не должен хранить вообще никакой информации о клиенте – никакой сессии Все запросы можно поделить на 4 типа в соответствии с CRUD, причем каждому типу сопоставляется HTTP метод – Post, Get, Put и Delete Вся логика крутится вокруг ресурсов, а не операций REST основывается на HTTP => доступны все плюшки: Кэширование. Масштабирование. Минимум накладных расходов. Стандартные коды ошибок. Какие форматы данных используются в REST -сервисахФормат обмена данными: здесь нет никаких ограничений. JSON — очень популярный формат, хотя можно использовать и другие, такие как XML Рассказать про responseBody и requestBody.Когда необходимо, чтобы результат работы метода в контроллере был выведен непосредственно в тело ответа на запрос, а не послужил адресом перехода и не был помещён как параметр в модель, нужно указать непосредственно перед методом аннотацию @ResponseBody. HTTP-запрос кроме заголовков и параметров имеет также основуную часть – тело запроса. Её содержимон также может быть распознано как параметр в методе контроллера. Для того, чтобы это произошло, необходимо указать @RequestBode в объявлении этого параметра. Поскольку происходит распознавание всего тела запроса как объекта, нет возможности объявить более чем один параметр с аннтоацией @ RequestBody. Поэтому, если требуется получить от клиента несколько объектов, приходится создавать на сервере специальный «транспортный класс», объединяющий эти объекты в одну структуру – и принимать от клиента объект-экземпляра такого класса. Рассказать про ResponseEntity.ResponseEntity представляет полный HTTP-ответ: код состояния, заголовки и тело. Поэтому его можно использовать для полной настройки HTTP-ответа. Для его использования, мы должны вернуть его из конечной точки. Является универсальным типом. В результате можем использовать любой тип в качестве ответа. Можно устанавливать заголовки HTTP. Предоставляет два вложенных интерфейса компоновщика: HeadersBuilde и его подинтерфейс BodyDuilder. Следовательно можно получить доступ к их возможностям через статические методы ResponseEntity. Как получить сущность, как параметр?@RequestBody HTTP-запрос кроме заголовков и параметров имеет также основную часть - тело запроса. Её содержимое также может быть распознано как параметр в методе контроллера. Для того, чтобы это произошло, необходимо указать @RequestBody в объявлении этого параметра: @RequestMapping(value = "/page", method = RequestMethod.POST) public String savePage(@RequestBody String pageContent) { //--- } Как выглядит массив в формате json?В JSON элементами массива могут быть строки, числа, объекты, массивы, Boolean и null. Могут быть значениями свойств объектов: { “name”:”John”, “age”;30, “cars”; [ “Ford”, “Bmw”, “Fiat” ] } Существуют вложенные массивы. Какую библиотеку json использует Spring?Jackson JSON Что такое AJAX?AJAX – это асинхронный JavaScript и XML. Набор методов веб-разработки, которые позволяют веб-приложениям работать асинхронно – обрабатывать любые запросы к серверу в фоновом режиме. Чем аннотация RestController отличается от Controller?Основная разница, заключается в способе создания тела HTTP ответа. MVC контроллен оприрается на технологию view, RESTfull веб сервис контроллер возвращает объект, который предоставляется в HTTP ответе в виде JSON или XML Проверить, что страница не перезагружается при действиях CRUD.Рассказать про RestTemplate, какие есть методы?Класс RestTemplate является центральным инструментов для выполнения HTTP-операций на стороне клиента в Spring. Предоставляет несколько служебных методов для построения HTTP-запросов и обработки ответов. Может сериализовать/десериализовать большинство объектов JSON и из него без особых усилий. По методам, их слишком много, для того чтобы озвучивать - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html |