Эта статья участвовала в третьем этапе тренировочного лагеря для создателей Nuggets. Подробности см.:Dig Li Project | Идет третий этап тренировочного лагеря создателя, «написание» личного влияния.
предисловие
手执烟花以谋生 心怀诗意以谋爱
Желаю пацанам во всем мире ни прыщей на лицах, ни масла на волосах, ни звёзд в короле, ни убийств, когда они едят кур, получить S в союзе, кивнуть на весь мир, и иметь супертепло, супер хорошая, супер хорошая подруга.
Сегодня блогер поделится тридцатью пятью вопросами и ответами из интервью SpringBoot.
Spring Boot
лучший из микросервисовJava
Один из фреймворков, рекомендуем вам статьSpring Boot
эксперты. В этой статье отобрано тридцать пять распространенныхSpring Boot
Точка знаний, я желаю вам руку помощи!
Вопрос один:
В чем разница между Spring Boot, Spring MVC и Spring?
- Spring
Наиболее важной особенностью Spring является внедрение зависимостей. Все SpringModules являются либо внедрением зависимостей, либо инверсией управления IOC. Когда мы правильно используем DI или IOC, мы можем разрабатывать слабосвязанные приложения. Модульное тестирование слабосвязанных приложений может быть выполнено легко.
- Spring MVC
Spring MVC обеспечивает несвязанный подход к разработке веб-приложений. Используя некоторые простые концепции, такие как DispatcherServelet, MoudlAndView и ViewResolver, разработка веб-приложений будет очень простой.
- SpringBoot
Проблема с Spring и SpringMVC заключается в том, что нужно настроить множество параметров. **Spring Boot решает эту проблему с помощью автоматически настроенного и запущенного проекта. Чтобы быстрее создавать готовые к производству приложения, Spring Boot предоставляет некоторые нефункциональные функции.
Вопрос второй:
Что такое автоматическая конфигурация?
Проблема с Spring и SpringMVC заключается в том, что нужно настроить множество параметров.
Можем ли мы принести больше интеллекта? Можем ли мы автоматически настроить некоторые bean-компоненты при добавлении в приложение MVC JAR?
Spring просматривает конфигурацию (среда, доступная в CLASSPATH) существующего приложения. Основываясь на этом, Spring Boot предоставляет базовую конфигурацию, необходимую для настройки приложений и фреймворков. Это автоматическая конфигурация.
Вопрос третий:
Что такое автоматическая конфигурация?
Что такое Spring Boot Starter?
Лаунчер — это удобный набор дескрипторов зависимостей, который можно разместить в собственной программе. Вы можете получить все необходимые вам технологии Spring и связанные с ними в одном месте, без необходимости искать и копировать и вставлять множество примеров кода, полагаясь на дескрипторы.
Например, если вы хотите использовать Spring и JPA для доступа к базе данных, просто нужно, чтобы ваш проект включал зависимость spring-boot-starter-data-jpa, и все готово.
Вопрос четвертый:
Можете ли вы привести пример, чтобы объяснить больше о Статерах?
Рассмотрим пример Статера — Spring Boot Stater Web.
Если вы хотите разработать веб-приложение или приложение, предоставляющее службы REST. Spring Boot Start Web предпочтительнее. Давайте создадим быстрый проект для Spring Boot Start Web, используя Spring Initializr.
Зависимости для Spring Boot Start Web.
На скриншотах ниже показаны различные зависимости, добавленные в наше приложение.
Зависимости можно разделить на:
-
Spring — ядро, beans, контекст, aop
-
Web MVC — (весна MVC)
-
Jackson - for JSON Binding
-
Validation - Hibernate,Validation API
-
Enbedded Servlet Container - Tomcat
-
Logging - logback,slf4j
Любое классическое веб-приложение будет использовать все эти зависимости. Spring Boot Starter Web поставляется с этими зависимостями.
Как разработчику мне больше не нужно беспокоиться об этих зависимостях и их совместимых версиях.
Вопрос пятый:
Какие еще варианты начального проекта предоставляет Spring Boot?
-
spring-boot-starter-web-services — веб-службы SOAP;
-
spring-boot-starter-web — веб-приложения и RESTful-приложения;
-
spring-boot-starter-test — модульные и интеграционные тесты;
-
spring-boot-starter-jdbc — традиционный JDBC;
-
spring-boot-starter-hateoas — добавляет в сервисы функциональность HATEOAS;
-
spring-boot-starter-security — Аутентификация и авторизация с помощью SpringSecurity;
-
spring-boot-starter-data-jpa — Spring Data JPA с Hbeernate;
-
spring-boot-starter-data-rest — Публикация простых REST-сервисов с использованием Spring Data REST;
Вопрос шестой:
Как Spring быстро создает готовые к производству приложения?
Spring Boot — это все о приложениях, готовых к быстрому производству. С этой целью он предоставляет некоторые нефункциональные функции из коробки, такие как кэширование, ведение журнала, мониторинг и встроенные серверы.
-
spring-boot-starter-actuator — используйте некоторые расширенные функции, такие как мониторинг и отслеживание вашего приложения.
-
spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat — выберите свой конкретный встроенный контейнер сервлета
-
spring-boot-starter-logging — ведение журнала с логбэком
-
spring-boot-starter-cache — включить поддержку кэширования Spring Framework.
-
###Какая минимальная версия Java требуется для Spring2 и Spring5?
-
Для Spring Boot 2.0 требуется Java 8 или новее. Java6 и Java7 больше не поддерживаются.
Рекомендуемое чтение:
Вопрос седьмой:
Какой самый простой способ создать проект Spring Boot?
Spring Initializr — отличный инструмент для запуска проектов Spring Boot.
-
Войдите в Spring Initializr и сделайте выбор следующим образом:
-
Выберите com.in28minutes.springboot как группу
-
Выберите studet-services в качестве компонента
-
Выберите зависимости ниже
-
Web
-
Actuator
-
DevTools
-
Нажмите «Создать», «Создать проект».
-
Импортируйте проект в Eclipse. Файл - Импорт - Существующий проект Maven
Вопрос восьмой:
Spring Initializr — единственный способ создать Spring Boot Projects?
Spring Initiatlizr упрощает создание проектов Spring Boot, однако вы также можете запустить проект, настроив проект maven и добавив правильные зависимости.
В нашем курсе Spring мы используем два метода для создания проектов.
Первый метод — start.spring.io.
Другой способ — сделать это вручную в проекте под названием «Основное веб-приложение».
Вручную настроить проект maven
Здесь есть несколько важных шагов:
-
В Eclipse используйте File - New Maven Project, чтобы создать новый проект.
-
Добавьте зависимости.
-
Добавьте плагин maven.
-
Добавьте класс приложения Spring Boot.
Вот и закончились приготовления!
Вопрос девятый:
зачем нам нужноspring-boot-maven-plugin
?
spring-boot-maven-plugin
Предоставляются некоторые команды для упаковки или запуска приложения, такого как jar.
-
spring-boot:run запускает ваше приложение SpringBooty.
-
spring-boot: repackage переупаковывает ваш jar или военный пакет, чтобы сделать его исполняемым
-
spring-boot:start и spring-boot:stop управляют жизненным циклом приложений Spring Boot (также для интеграционных тестов).
-
spring-boot:build-info Генерировать информацию о сборке, которую может использовать привод.
Вопрос десятый:
Как я могу автоматически перезагрузить свое приложение с помощью SpringBoot?
Используйте инструменты разработки Spring Boot.
Добавить инструменты разработки Spring Boot в ваш проект очень просто.
Добавьте следующие зависимости в ваш проект Spring Boot pom.xml.
Перезапустите приложение, и все готово.
Точно так же, если вы хотите автоматически загружать страницы, взгляните на FiveReload.
woohoo.logic big.com/tutorials/ да….
Во время тестирования я обнаружил уязвимость LiveReload, если вы обнаружите ее во время тестирования, сообщите нам об этом.
Вопрос одиннадцатый:
Что такое встроенный сервер? Почему мы должны использовать встроенный сервер?
Подумайте о том, что нужно для развертывания приложения на вашей виртуальной машине.
Шаг 1: Установите Java
Часть 2. Установите веб-сервер или сервер приложений (Tomat/Wbesphere/Weblogic и т. д.)
Часть 3. Развертывание пакета войны приложений
Если мы хотим упростить эти шаги, как нам это сделать?
Давайте подумаем, как сделать серверную часть приложения?
Вам нужна только виртуальная машина с установленной Java, и вы можете развертывать приложения прямо на ней, Разве это не круто?
Эта идея лежит в основе встроенных серверов.
Когда мы создаем развертываемое приложение, мы встраиваем сервер (например, tomcat) в развертываемый сервер.
Например, для приложения Spring Boot можно создать jar-файл приложения, содержащий Embedded Tomcat. Вы можете запускать веб-приложение так же, как обычное приложение Java.
Встроенный сервер — это место, где наш исполняемый модуль содержит двоичные файлы сервера (например, tomcat.jar).
Вопрос двенадцатый:
Как добавить общий код JS в Spring Boot?
В исходной папке создайте папку с именем static. Затем вы можете поместить туда свой статический контент.
Например, путь myapp.js — resources\static\js\myapp.js, вы можете сослаться на его использование в jsp:
Ошибка: Браузер HAL выдает мне несанкционированную ошибку - для доступа к этому ресурсу требуется полная аутентификация Как исправить эту ошибку?
Два метода:
- Способ 1: отключить проверку безопасности
application.properties management.security.enabled:FALSE
- Способ 2: найдите в журнале пароль и передайте его в заголовке запроса.
Вопрос тринадцатый:
Что такое весенние данные?
Из: https://projects.spring.io/spring-data/
Миссия Spring Data состоит в том, чтобы предоставить знакомую, согласованную модель программирования на основе Spring для доступа к данным, сохраняя при этом специфику базового хранилища данных. Это упрощает использование технологий доступа к данным, реляционных и нереляционных баз данных, сред сокращения карт и облачных служб данных.
Чтобы сделать это немного проще, Spring Data предоставляет интерфейс абстракций, который не ограничен базовым источником данных.
Вы можете определить простую библиотеку для вставки, обновления, удаления и получения задач без написания большого количества кода.
Четырнадцатый вопрос:
Что такое Spring Data REST?
Spring Data TEST
можно использовать для публикации оSpring
база данныхHATEOAS RESTful
ресурс.
Не написав слишком много кода, мы можем опубликовать RESTful API в базе данных Spring.
Ниже показаны некоторые примеры тестовых серверов.
POST:
-
URL-адрес: http://локальный:8080/todos
-
Use Header:Content-Type:Type:application/json
-
Request Content
Пятнадцатый вопрос:
Как path="users", collectionResourceRel="users" работает с Spring Data Rest?
-
path — сегмент пути для экспорта этого ресурса.
-
collectionResourceRel — значение rel, используемое при создании ссылок на ресурсы коллекции. Используется при создании ссылок HATEOAS.
Шестнадцатый вопрос:
Что происходит в фоновом режиме, когда приложение Spring Boot запускается как приложение Java?
Если вы используете Eclipse IDE, подключаемый модуль Eclipse maven гарантирует, что как только будут добавлены изменения в зависимости или файлы классов, они будут скомпилированы и готовы в целевом файле! После этого это то же самое, что и любое другое приложение Java.
Когда вы запускаете java-приложение, файл автоконфигурации весенней загрузки волшебным образом включается.
- Когда приложение Spring Boot обнаруживает, что вы разрабатываете веб-приложение, оно запускает tomcat.
Вопрос семнадцатый:
Можем ли мы заменить tomcat на причал в spring-boot-starter-web?
Удалите существующие зависимости в spring-boot-starter-web и добавьте следующее.
Вопрос восемнадцатый:
Как создать файл WAR с помощью Spring Boot?
-
Рекомендуемое чтение:
-
Ниже приведена прямая ссылка на документацию Spring:
Вопрос девятнадцатый:
Как выполнить развертывание на разных серверах с помощью Spring Boot?
-
Создайте файл войны в проекте.
-
Разверните его на своем любимом сервере (websphere, Weblogic, Tomcat и т. д.).
Шаг 1. Это руководство по началу работы должно помочь:
Шаг 2: Зависит от вашего сервера.
Вопрос двадцать:
В чем разница между RequestMapping и GetMapping?
-
RequestMapping имеет атрибуты класса и может выполнять GET, POST, PUT или другие методы запроса в аннотациях.
-
GetMapping — это частный случай метода запроса GET. Это просто расширение ResquestMapping для ясности.
Вопрос двадцать первый:
Почему мы не рекомендуем использовать Spring Data Rest в реальных приложениях?
Мы считаем, что Spring Data Rest отлично подходит для быстрого прототипирования! Используйте с осторожностью в больших приложениях.
С помощью Spring Data REST вы можете публиковать свои объекты данных непосредственно как службы RESTful.
При проектировании RESTful-сервера лучшие практики диктуют, что ваш интерфейс должен учитывать две важные вещи:
-
ваш модельный ряд.
-
ваш клиент.
С Spring Data REST вам больше не нужно думать об этих двух, вам просто нужно опубликовать объект как сервис TEST.
Вот почему мы рекомендуем использовать Spring Data Rest вместо быстрого прототипирования или в качестве начального обходного пути для вашего проекта. Это не очень хорошая заметка для полноценного проекта эволюции.
Вопрос двадцать второй:
существуетSpring Initializer
Как изменить имя пакета проекта?
Хорошей новостью является то, что вы можете настроить его. Нажмите на ссылку «Перейти к полной версии». Вы можете настроить имя пакета, которое хотите изменить!
Вопрос двадцать третий:
Где я могу найти полный список свойств, которые можно настроить application.propertierde?
Вопрос двадцать четвертый:
В чем разница между JPA и Hibernate?
-
JPA — это спецификация или интерфейс
-
Hibernate — это реализация JPA.
Когда мы используем JPA, нам не нужно использовать пакет импорта спящего режима, когда мы используем аннотации и интерфейсы в пакете javax.persistence.
Мы рекомендуем использовать аннотации JPA, потому что мы не привязываем их к Hibernate в качестве реализации. Позже (я знаю, вероятность меньше одного процента) мы можем использовать другую реализацию JPA.
Вопрос двадцать пятый:
Где должна начинаться граница бизнеса?
Мы рекомендуем управлять обязательствами на сервисном уровне. Бизнес-логика находится на бизнес-уровне или сервисном уровне, и в то же время управление бизнесом, которое вы хотите выполнять, также находится на этом уровне.
Вопрос двадцать шестой:
Какие зависимости необходимы для запуска приложения JPA, подключенного к базе данных H2 в памяти с использованием Spring Boot?
В проекте Spring Boot вы можете загрузить консоль H2, если убедитесь, что следующие зависимости находятся в пути к классам.
-
веб-пусковая установка
-
h2
-
активатор данных jpa
Некоторые моменты, на которые следует обратить внимание:
-
Внутренняя память данных существует только во время выполнения приложения. Это эффективный способ изучения фреймворка.
-
Это не то, каким вы хотите видеть приложение в реальном мире.
-
В вопросе «Как мне подключиться к внешней базе данных?» мы объяснили, как подключиться к выбранной вами базе данных.
Вопрос двадцать седьмой:
Как я могу выбрать Hibernate в качестве реализации JPA по умолчанию без какой-либо настройки?
spring-boot-stater-data-jpa имеет переходные зависимости для Hibernate и JPA.
Когда Spring Boot обнаружит Hibernate в пути к классам, он автоматически настроит его как реализацию JPA по умолчанию.
Вопрос двадцать восьмой:
Где указанная информация о подключении к базе данных? Откуда он знает, что нужно автоматически подключаться к H2?
Это волшебство автоматической настройки Spring Boot.
От:docs.spring.IO/весенняя загрузка…
Автоматическая настройка Spring Boot пытается автоматически настроить ваше приложение Spring на основе добавленных вами зависимостей jar. Например, если HSQLDBis существует в вашем пути к классам, а компонент подключения к базе данных не настроен вручную, мы можем автоматически настроить базу данных в памяти.
- Дальнейшее чтение:woohoo.spring boot tutorial.com/spring-boot…
Когда Spring Boot обнаружит Hibernate в пути к классам, он автоматически настроит его как реализацию JPA по умолчанию.
Вопрос двадцать девятый:
Как нам подключиться к внешней базе данных, такой как MySQL или Oracle?
Шаг 1. Добавьте зависимости коннектора mysql в pom.xml
Шаг 2. Удалите зависимости H2 из pom.xml
Или, по крайней мере, сделать это частью теста.
Шаг 3 — Установите базу данных MySQL
-
увидеть больше здесьGitHub.com/in28minutes…
-
Дальнейшее чтение:woohoo.spring boot tutorial.com/spring-boot…
Шаг 4. Настройте подключение к базе данных MySQL.
Настроить application.properties
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/todo_example
spring.datasource.username=todouser
spring.datasource.password=YOUR_PASSWORD
Шаг 5 - Перезагрузитесь, и вы готовы к работе!
Вопрос тридцать:
Как называется база данных H2 по умолчанию, настроенная Spring Boot? Почему имя базы данных по умолчанию — testdb?
В application.properties указаны все значения по умолчанию
Найдите свойства ниже
#Name of the datasource.
spring.datasource.name=testdb
Если вы используете базу данных внутреннего хранилища H2, она определяет имя, которое Spring Boot будет использовать для установки вашей базы данных H2.
Вопрос тридцать первый:
Что произойдет, если H2 не будет в пути к классам?
-
сообщит о следующей ошибке
Cannot determine embedded database driver class for database type NONE
Добавьте H2 в pom.xml и перезапустите сервер.
Вопрос тридцать второй:
Можете ли вы привести пример использования ReadOnly для управления транзакциями?
- Когда вы читаете контент из базы данных, вы хотите установить описание пользователя или другое описание в транзакции в режим только для чтения, чтобы Hebernate не нужно было снова проверять сущность на наличие изменений. Это очень эффективно.
Вопрос тридцать третий:
Как лучше всего опубликовать пользовательские конфигурации для пользовательских приложений Spring Boot?
Проблема с @Value заключается в том, что вы можете назначить значение конфигурации через приложение. Лучше использовать централизованный подход. Вы можете использовать @ConfigurationProperties для определения компонента конфигурации.
Вы можете настроить параметры в application.properties.
basic.value: true
basic.message: Dynamic Message
basic.number: 100
Вопрос тридцать четвертый:
Какие требования к конфигурационному файлу?
Разработка корпоративных приложений сложна, и вам нужно сочетание сред:
-
Dev
-
QA
-
Stage
-
Production
В каждой среде вам нужны разные конфигурации приложений.
Spring и Spring Boot предоставляют функции, которые вы можете указать.
-
Каковы конфигурации разных сред в разных файлах конфигурации?
-
Задает активный профиль для данной среды.
Spring Boot выберет конфигурацию приложения на основе активного профиля, установленного в конкретной среде.
Вопрос тридцать пятый:
Как настроить конфигурацию конкретной среды с помощью Spring Boot с помощью файла конфигурации?
Файл конфигурации не является ключом к настройке среды.
В следующем примере мы будем использовать два файла конфигурации
-
dev
-
prod
Конфигурация приложения по умолчанию находится в application.properties. Давайте посмотрим на следующий пример:
application.properties
basic.value= true
basic.message= Dynamic Message
basic.number= 100
Мы хотим настроить свойство application.properties для файла dev. Нам нужно создать файл с именем application-dev.properties и переопределить свойства, которые мы хотим настроить.
application-dev.properties
basic.message: Dynamic Message in DEV
После того, как вы специально настроили профиль, вам необходимо установить активный профиль в среде.
Есть несколько способов сделать это:
-
Используйте Dspring.profiles.active=prod в параметрах виртуальной машины.
-
Используйте spring.profiles.active=prod в application.properties
Тридцать пять вопросов и ответов интервью SpringBoot были опубликованы здесь!
🎉 Наконец-то
- Дополнительные справочные сообщения в блоге см. здесь:Блог Чен Юнцзя
- Друзья, которым нравятся блогеры, могут подписаться, поставить лайк и продолжать обновлять, хе-хе!