🚀 Вопросы интервью по Spring Boot

Вопросы 11-20 для разработчиков

Вопрос Spring Boot 11
Что такое Spring Boot CLI и самые используемые CLI команды?

Ответ: Spring Boot CLI (Command Line Interface) — это инструмент командной строки, который позволяет разработчикам быстро создавать, запускать и тестировать Spring Boot приложения без полной настройки проекта. Он использует язык Groovy для упрощения разработки приложений и автоматически управляет зависимостями.

Преимущества Spring Boot CLI:
  • Быстрая разработка приложений
  • Автоматическое управление зависимостями
Самые используемые CLI команды:
Команда Описание
spring run Запускает Spring Boot приложение
spring test Выполняет тесты приложения
spring jar Упаковывает приложение в JAR-файл
spring war Упаковывает приложение в WAR-файл
spring init Генерирует новый Spring Boot проект
spring help Отображает справку по CLI-командам
spring version Отображает установленную версию Spring Boot CLI
Вопрос Spring Boot 12
Что такое базовые аннотации Spring Boot?

Ответ: Spring Boot предоставляет несколько аннотаций, которые упрощают конфигурацию, внедрение зависимостей и обработку запросов:

Основные аннотации:
  • @SpringBootApplication: Помечает главный класс Spring Boot приложения
  • @RestController: Создаёт REST-контроллер, который возвращает данные
  • @Controller: Создаёт Spring MVC контроллер
  • @RequestMapping: Сопоставляет HTTP-запросы с методами
  • @GetMapping: Обрабатывает HTTP GET-запросы
  • @PostMapping: Обрабатывает HTTP POST-запросы
  • @Autowired: Автоматически внедряет Spring beans
  • @Service: Помечает класс слоя Service
  • @Repository: Помечает класс слоя доступа к данным
  • @Component: Помечает класс как управляемый Spring bean
Вопрос Spring Boot 13
Что такое управление зависимостями в Spring Boot?

Ответ: Spring Boot Dependency Management упрощает управление зависимостями проекта, автоматически предоставляя совместимые версии библиотек. Для этого используется Spring Boot Bill of Materials (BOM), который гарантирует, что все зависимости корректно работают вместе.

Преимущества:
  • Устраняет конфликты версий
  • Использует spring-boot-dependencies BOM
  • Упрощает конфигурацию Maven и Gradle
Пример зависимости для веб-приложения:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
                
Вопрос Spring Boot 14
Можно ли изменить порт встроенного Tomcat-сервера в Spring Boot?

Ответ: Да, порт встроенного Tomcat-сервера в Spring Boot приложении можно изменить. Самый простой способ — задать свойство server.port в файле application.properties вашего приложения.

Пример: установка порта 8081

Добавьте следующее свойство в файл application.properties:


server.port=8081
                
Вопрос Spring Boot 15
Что такое starter dependency модуля Spring Boot?

Ответ: Spring Boot Starters — это набор предконфигурированных maven-зависимостей, которые упрощают разработку определённых типов приложений. Эти starter'ы включают:

Компоненты Starter Dependency:
  • Зависимости
  • Контроль версий
  • Конфигурацию, необходимую для определённых возможностей
Использование Spring Boot starter dependency:

Чтобы использовать Spring Boot starter dependency, нужно просто добавить его в файл pom.xml вашего проекта. Например, чтобы добавить Spring Boot starter web dependency:


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
                
Вопрос Spring Boot 16
Какой порт по умолчанию у Tomcat в Spring Boot?

Ответ: Порт по умолчанию встроенного сервера Apache Tomcat в Spring Boot — 8080. Порт можно изменить, задав свойство server.port в файле конфигурации приложения.

Изменение порта в application.properties:

server.port=8081
                
Изменение порта в application.yml:

server:
  port: 8081
                
Вопрос Spring Boot 17
Можно ли отключить веб-сервер по умолчанию в Spring Boot приложении?

Ответ: Да, Spring Boot позволяет создавать приложения без встроенного веб-сервера — например, консольные приложения, batch-приложения или запланированные задачи. Рекомендуемый подход — сконфигурировать приложение как non-web приложение.

Способ 1: через application.properties

spring.main.web-application-type=none
                
Способ 2: через код на Java

SpringApplication application = new SpringApplication(MyApplication.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
                
Вопрос Spring Boot 18
Как отключить определённый класс auto-configuration?

Ответ: Spring Boot автоматически конфигурирует beans на основе доступных в classpath зависимостей. Если определённая автоконфигурация не нужна, её можно исключить с помощью атрибута exclude у @SpringBootApplication или @EnableAutoConfiguration.

С помощью @SpringBootApplication:

@SpringBootApplication(
    exclude = DataSourceAutoConfiguration.class
)
public class MyApplication {
}
                
С помощью @EnableAutoConfiguration:

@EnableAutoConfiguration(
    exclude = DataSourceAutoConfiguration.class
)
                
Вопрос Spring Boot 19
Можно ли создать non-web приложение в Spring Boot?

Ответ: Да. Spring Boot поддерживает как web, так и non-web приложения. Non-web приложение запускается без встроенного веб-сервера и обычно используется для фоновой обработки или задач командной строки.

Преимущества non-web приложений:
  • Лёгкий вес и быстрый запуск
  • Не требуется встроенный веб-сервер
  • Поддерживает Dependency Injection (DI)
  • Лёгкая интеграция со Spring Batch и планировщиком задач (Scheduling)
Вопрос Spring Boot 20
Опишите поток обработки HTTPS-запросов в Spring Boot приложении

Ответ: Когда клиент отправляет HTTPS-запрос, Spring Boot обрабатывает его через несколько слоёв, прежде чем вернуть защищённый ответ.

Процесс обработки HTTPS-запроса:
  • Клиент отправляет HTTPS-запрос на сервер
  • Встроенный сервер получает зашифрованный запрос
  • SSL/TLS расшифровывает запрос перед обработкой
  • DispatcherServlet действует как Front Controller и маршрутизирует запрос к соответствующему контроллеру
  • Controller валидирует и обрабатывает запрос
  • Слой Service выполняет бизнес-логику
  • Слой Repository взаимодействует с базой данных, используя JPA, Hibernate или JDBC
  • База данных возвращает запрашиваемые данные
  • Ответ проходит обратно через Repository, Service и Controller
  • Spring Boot сериализует ответ (обычно JSON/XML) и безопасно отправляет его по HTTPS клиенту