SpringBoot: тридцать пять вопросов и ответов интервью SpringBoot!

Spring Boot задняя часть
SpringBoot: тридцать пять вопросов и ответов интервью SpringBoot!

Эта статья участвовала в третьем этапе тренировочного лагеря для создателей Nuggets. Подробности см.:Dig Li Project | Идет третий этап тренировочного лагеря создателя, «написание» личного влияния.

предисловие

手执烟花以谋生 心怀诗意以谋爱

Желаю пацанам во всем мире ни прыщей на лицах, ни масла на волосах, ни звёзд в короле, ни убийств, когда они едят кур, получить S в союзе, кивнуть на весь мир, и иметь супертепло, супер хорошая, супер хорошая подруга.

Сегодня блогер поделится тридцатью пятью вопросами и ответами из интервью SpringBoot.

Spring Bootлучший из микросервисовJavaОдин из фреймворков, рекомендуем вам статьSpring Bootэксперты. В этой статье отобрано тридцать пять распространенныхSpring BootТочка знаний, я желаю вам руку помощи!


Вопрос один:

В чем разница между Spring Boot, Spring MVC и Spring?
  1. Spring

Наиболее важной особенностью Spring является внедрение зависимостей. Все SpringModules являются либо внедрением зависимостей, либо инверсией управления IOC. Когда мы правильно используем DI или IOC, мы можем разрабатывать слабосвязанные приложения. Модульное тестирование слабосвязанных приложений может быть выполнено легко.

  1. Spring MVC

Spring MVC обеспечивает несвязанный подход к разработке веб-приложений. Используя некоторые простые концепции, такие как DispatcherServelet, MoudlAndView и ViewResolver, разработка веб-приложений будет очень простой.

  1. 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 больше не поддерживаются.

Рекомендуемое чтение:

GitHub.com/spring-pro — это…


Вопрос седьмой:

Какой самый простой способ создать проект 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 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 существует в вашем пути к классам, а компонент подключения к базе данных не настроен вручную, мы можем автоматически настроить базу данных в памяти.

Когда Spring Boot обнаружит Hibernate в пути к классам, он автоматически настроит его как реализацию JPA по умолчанию.


Вопрос двадцать девятый:

Как нам подключиться к внешней базе данных, такой как MySQL или Oracle?

Шаг 1. Добавьте зависимости коннектора mysql в pom.xml

在这里插入图片描述

Шаг 2. Удалите зависимости H2 из pom.xml

Или, по крайней мере, сделать это частью теста.

在这里插入图片描述

Шаг 3 — Установите базу данных MySQL

Шаг 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 были опубликованы здесь!


🎉 Наконец-то

  • Дополнительные справочные сообщения в блоге см. здесь:Блог Чен Юнцзя
  • Друзья, которым нравятся блогеры, могут подписаться, поставить лайк и продолжать обновлять, хе-хе!