- PVSM.RU - https://www.pvsm.ru -
Приветствую всех. Эта статья раскроет основные вопросы по теме "Spring Boot". Она ориентирована на начинающих разработчиков, и может быть полезной при подготовке к собеседованию. Она получилась достаточно компактной, по сравнению с остальными статьями.
Spring Boot — это набор уже настроенных модулей которые работают в Spring Framework и упрощают конфигурирование Spring приложения.
Вот некоторые центральные модули:
Он предполагает что вам надо, основываясь на зависимостях в classpath. “Соглашение над конфигурацией” — он автоконфигурирует Spring специально подобранными настройками, которые потом можно переопределить.
Для этого есть несколько аннотаций, @ConditionalOnClass
, @ConditionalOnBean
, @ConditionalOnMissingBean
и @ConditionalOnMissingClass
, которые позволяют применять условия к @Configuration-классам и @Bean-методам в этих классах.
Например:
Бин будет создан только если определенная зависимость есть в classpath.
Используйте @ConditionalOnClass
, установив туда имя класса из classpath.
Бин будет создан только если в контейнере нет бина такого типа или с таким именем.
Используйте @ConditionalOnMissingBean
, установив туда имя или тип бина для проверки.
Существует список аннотаций-условий, каждая из которых используется для управления созданием бинов. Вот список таких аннотаций(на самом деле их больше):
Аннотация | Условие прохождения |
@ConditionalOnClass | Пристутствие класса в classpath |
@ConditionalOnMissingClass | Отсутствие класса в classpath |
@ConditionalOnBean | Присутствие бина или его типа(класс бина) |
@ConditionalOnMissingBean | Отсутствие бина или его типа |
@ConditionalOnProperty | Присутствие Spring-свойства |
@ConditionalOnResource | Присутствие файла-ресурса |
@ConditionalOnWebApplication | Если это веб-приложение, будет использоваться WebApplicationContext |
@ConditionalOnNotWebApplication | Если это не веб-приложение |
Spring Boot использует особый порядок PropertySource’ов для того чтобы позволить переопределять значения свойств. Вот порядок источников для получения свойств приложения:
@TestPropertySource
из тестов@PropertySource
на @Configuration-классеSpringApplication.setDefaultProperties()
)Также добавлю, что property.yml всегда переопределяют property.properties.
Аннотация @SpringBootApplication
предоставляет 3 свойства:
@EnableAutoConfiguration
— включает механизм Spring Boot’а для автоконфигурации@ComponentScan
— включает сканирование компонентов в package’е класса где она находится@Configuration
— позволяет регистрировать доп. бины в контекстеВот другие основные аннотации:
@EnableConfigurationProperties
— позволяет использовать бины с аннотацией @ConfigurationProperties
@ConfigurationProperties
— позволяет связывать проперти из файлов с бинами
@WebMvcTest
— используется для тестов Spring MVC
@SpringBootTest
— используется, когда нужны функции Spring Boot в тестах
@DataJpaTest
— используется для теста компонентов JPA
Встроенный контейнер представляет собой сервер, который поставляется с конечным приложением, тогда как WAR является архивом, который может быть развернут на внешнем сервере.
Контейнеры сервлетов хороши для управления несколькими приложениями на одном хосте, но они не очень полезны для управления только одним приложением.
С облачным окружение используется одно приложение на виртуальную машину является предпочтительным и более распространенным способом. Современные фреимворки хотят быть более совместимыми с облаками, поэтому переходят на встраиваемые контейнеры.
Spring Boot поддерживает Tomcat, Jetty, и Undertow.
По умолчанию используется TomCat. Для того чтобы изменить контейенер, просто добавьте нужную зависимость в pom.xml.
Она позволяет использовать автоконфигурацию. Автоконфигурация в Spring Boot пытается создать и настроить бины основываясь на зависимостях в classpath, для того чтобы позволить разработчику быстро начать работать с различными технологиями и убрать шаблонный код.
Да, делает, если стоит аннотация @SpringBootApplication
, которая содержит аннотацию @ComponentScanning
.
По умолчанию Spring ищет бины в том же package, что и класс с аннотацией. Это можно переопределить, указав классы(или package) в параметрах scanBasePackageClasses
или scanBasePackage
.
Стартеры предоставляют набор удобных дескрипторов зависимостей, которые можно включить в ваше приложение. Вы получаете один источник для spring и связанных с ним технологий без необходимости искать и копипастить дескрипторы развертывания.
Например, если вы хотите начать работать с Spring JPA, всего лишь добавьте зависимость spring-boot-starter-data-jpa в ваш проект.
Стартеры содержат большинство зависимостей, нужных вам для запуска проекта, работают быстро и согласованно, и поддерживают наборы транзитивных зависимостей.
Да. По умолчанию, сообщения с приоритетами ERROR, WARN, INFO будут выводится в приложении. Чтобы включить вывод уровней DEBUG или TRACE вы должны использовать ключи --debug
/--trace
или установить проперти-свойства debug/trace = true.
logging.level.root = WARN
logging.level.org.springframework.web = DEBUG
logging.level.org.hibernate = ERROR
По умолчанию Sprin Boot логирует только в консоль. Если вы хотите логировать события в файл, необходимо установить свойства logging.file или logging.path в true(например, в application.properties).
Цветной вывод сообщений в журнал
В консолях, поддерживающих ANSI, для улучшения читаемости сообщения различных уровней могут быть выделяться с помощью разных цветов. Вот как это настраивается в property-файле:
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow}
Если вы хотите, чтобы записать шла в другие файлы, вы также можете это настроить(YAML):
logging:
path: /var/logs/
file: bookWarn.log
level:
root: WARN
org.
springframework:
security: DEBUG
Автор: Anton Sorokin
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/333037
Ссылки в тексте:
[1] Внедрение зависимостей, контейнер, IoC, бины: https://habr.com/ru/post/470305/
[2] Spring Boot: https://habr.com/ru/post/471312/
[3] Spring MVC: https://habr.com/ru/post/470566/
[4] Spring Security: https://habr.com/ru/post/470786/
[5] REST: https://habr.com/ru/post/471140/
[6] Источник: https://habr.com/ru/post/471312/?utm_source=habrahabr&utm_medium=rss&utm_campaign=471312
Нажмите здесь для печати.