Список 20 лучших вопросов и ответов на собеседования Spring Boot
- Каковы преимущества использования Spring boot? Чем он отличается от Spring framework? Spring Boot позволяет очень легко создавать автономные приложения, предоставляя автоматические конфигурации. Он обеспечивает готовые к производству функции, такие как привод.
Особенности
Автоматическая настройка создайте автономное приложение с минимальной суетой, Предоставьте встроенный сервер tomcat, Jetty, Нет необходимости развертывать файл war, нет необходимости поддерживать приложение/веб-сервер, предоставляя готовые к работе функции, такие как метрики, JMX, проверки работоспособности и аудит. Предоставляют различные возможности для упрощения управления зависимостями Простая интеграция с библиотеками сторонних производителей Внешний файл свойств профиля конфигурации Spring boot – это дополнение для Spring framework. Spring Boot упрощает создание приложения за счет его автоматической настройки.
Каковы несколько часто используемых аннотаций Spring Boot? @SpringBootApplication: отметьте основной класс приложения Spring Boot @SpringBootTest: используется для интеграционного тестирования @@Конфигурация: используется для предоставления конфигураций компонента @Условный @Условный/| @Компонент @DataJpaTest @WebMvcTest @WebMvcTest @Значение @Controller Совет Как настроить среду или ApplicationContext перед запуском приложения Spring boot?
Класс приложения Spring содержит ApplicationListeners и ApplicationContextInitializers, которые используются для применения настроек к контексту или среде. Spring Boot загружает ряд таких настроек. Он внутренне использует META-INF/spring.factories.
Существует множество способов регистрации дополнительных настроек:
I. Программно, вызвав методы addlistener и add Initializers в приложении Spring перед его запуском. ii. Декларативно, установив контекст.инициализатор.классы или контекст.прослушиватель.классы в приложении.свойства. iii. Декларативно, добавив META-INF/spring.factories и добавив файлы jar, которые приложение использует в качестве библиотеки.
- Как создать пользовательскую автоматическую конфигурацию весенней загрузки? Автоконфигурация – это способ автоматической настройки приложения Spring Boot с минимальными настройками. Классы автоматической настройки могут быть объединены во внешние банки и загружены приложением Spring Boot. Автоконфигурация может быть связана с “начальными” зависимостями, которые предоставляют код автоконфигурации, а также типичные библиотеки, которые вы будете использовать с ним.
Под капотом автоматическая настройка реализована с помощью стандартных классов @Configuration. Дополнительные @Условные аннотации используются для ограничения того, когда следует применять автоматическую настройку. Обычно классы автоматической настройки используют аннотации @conditionalonclass и @ConditionalOnMissingBean. Это гарантирует, что автоматическая настройка применяется только тогда, когда найдены соответствующие классы и когда вы не объявили свою собственную @Конфигурацию.
- Как отключить определенный компонент автоматической настройки в Spring Boot? Чтобы исключить/отключить загрузку компонента автоматической настройки в приложение, мы можем добавить аннотацию @EnableAutoConfiguration с атрибутом exclude или excludename в класс конфигурации.
Другим вариантом отключения определенных автоматических конфигураций является установка свойства spring.auto configure.exclude в файле свойств приложения.
- Что такое привод пружинного башмака? Как создать пользовательский привод? Приводы включают готовые к работе функции в приложение Spring Boot без необходимости самостоятельно реализовывать эти функции. Конечные точки привода защищены по умолчанию. Вот некоторые из распространенных конечных точек Spring Boot
/здоровье — Показывает информацию о состоянии приложения. Он часто используется программным обеспечением для мониторинга, чтобы предупредить кого-либо о выходе из строя производственной системы./информационные дисплеи произвольная информация о приложении/метрики — Показывает информацию о “метриках” для текущего приложения;/трассировка — Отображает информацию о трассировке/сопоставления — Отображает сопоставленный список всех путей @RequestMapping. По умолчанию все конечные точки, кроме выключения, включены. Чтобы включить/отключить конечные точки привода, мы можем использовать его свойство management.endpoint..enabled. Например
управление.конечная точка.выключение.включено = истинная загрузка Spring автоматически предоставляет конечные точки с помощью @Endpoint, @webendpoint или @WebEndpointExtension по протоколу HTTP с использованием Джерси, Spring MVC или Spring WebFlux. мы можем добавить @компонент с аннотацией @Endpoint, любые методы, аннотированные @Readoperations, @Writeoperations или @DeleteOperation, автоматически отображаются через JMX, а в веб-приложении также через HTTP.
- Как настроить регистратор в Spring Boot? Как изменить уровень ведения журнала по умолчанию? Spring Boot использует ведение журнала общего пользования для всех внутренних журналов, но оставляет базовую реализацию журнала открытой. Конфигурации по умолчанию предусмотрены для ведения журнала Java Util, Log4J2 и обратного входа. По умолчанию, если мы используем стартеры, для ведения журнала используется обратный вход.
Включите режим отладки, запустив приложение с флагом –debug. $ java -банка myapp.jar — отладка Из приложения.свойства По умолчанию Spring Boot регистрирует только консоль и не записывает файлы журналов. Если мы хотим записывать файлы журналов, мы можем установить alogging.файл или ведение журнала.свойство пути в вашем приложении.свойства.
Изменение уровня журнала
- Какие существуют различные подходы для загрузки нескольких внешних файлов конфигурации/свойств? Существуют различные способы, которыми мы можем предоставить файлы конфигурации загрузки. Свойства пружинной загрузки загружаются в следующем порядке. мы можем использовать один или несколько подходов в зависимости от наших требований.
Аргументы командной строки: $java -jar myapp.jar:job1.свойства,путь к классу:job2.свойства com.приложение. Основной класс
- Настройка системных свойств Java (System.GetProperties()).
- Настройка переменных среды операционной системы.
- Свойства приложения за пределами вашей упакованной банки (свойства приложения, включая варианты YAML и профиля).
- Свойства приложения, упакованные внутри вашей банки (application.properties, включая варианты YAML и профиля).
- Аннотации @PropertySource к вашим классам @Configuration.
- Свойства по умолчанию (задаются с помощью приложения Spring.установите свойства по умолчанию).
- Объясните, как работают профили загрузки Spring? Как настроить несколько профилей? Профили Spring предоставляют возможность разделить части конфигурации вашего приложения и сделать ее доступной только в определенных средах. Например, мы можем использовать отдельный профиль для тестирования. Любой @компонент или @Конфигурация могут быть помечены символом @профиль , чтобы ограничить время их загрузки.
@@Конфигурация @профиль (“производство”) общедоступный класс Моя конфигурация безопасности{ } Мы можем использовать свойство среды spring.profiles.active, чтобы указать, какие профили активны.
spring.profiles.active=тест Из командной строки мы передаем следующие параметры
$java -банка myapp.jar —
- Как использовать пользовательский родительский помпон spring boot? Spring Boot предоставляет родительский POM для упрощения создания приложений Spring Boot. Родитель pom.xml заботится об управлении зависимостями и плагинами.
Чтобы создать пользовательский родительский POM, мы можем использовать родительский элемент spring-boot-starter в качестве зависимости и настроить плагин spring-boot-maven.
орг.пружинная рама.загрузочная пружина-загрузочные зависимости ${springframework.boot.версия} импорт pom
- Как изменить контекстный путь по умолчанию в Spring Boot? мы можем просто изменить путь к контексту по умолчанию, определив его в application.properties server.servlet.context-путь=/rest/
мы также устанавливаем системное свойство, параметры среды операционной системы и из командной строки.
- Как развернуть приложение Spring Boot в качестве ВОЙНЫ? плагин spring-boot-maven добавлен в ваш pom.xml автоматически пытается переписать архивы, чтобы сделать их исполняемыми, используя цель spring-boot: переупаковка. мы можем изменить упаковку по умолчанию с pom.xml по
война И мы инициализируем контекст сервлета, требуемый контекстом Tomcat. мы можем реализовать интерфейс инициализатора SpringBootServletInitializer.
@SpringBootApplication основной класс общедоступного класса расширяет инициализатор SpringBootServletInitializer { }
- Как изменить порт сервера по умолчанию при весенней загрузке? По умолчанию встроенный сервер запускается с порта 8080. мы можем изменить его, определив в приложении.свойства
сервер.порт=8084 мы также можем изменить его динамически, внедрив пользовательский интерфейс веб-сервера и передав его из командной строки.
- Как настроить безопасность Spring по умолчанию в Spring Boot? Spring Boot автоматически настраивает безопасность, просто добавляя зависимость security starter. Класс SecurityAutoConfiguration содержит различные автоматические конфигурации по умолчанию. По умолчанию при загрузке Spring будет включена базовая безопасность аутентификации.
Мы можем настроить безопасность Spring, расширив класс WebSecurityConfigurerAdapter и переопределив метод configure.
@Конфигурация общедоступный класс SecurityConfig расширяет WebSecurityConfigurerAdapter { @Переопределение недействительной настройки(HttpSecurity http){ } }
- Как отключить Spring Security в приложении Spring Boot? мы можем отключить автоматическую настройку безопасности, исключив класс SecurityAutoConfiguration из приложения Spring Boot.
@@Приложение SpringBootApplication(исключить={SecurityAutoConfiguration.class }) конфигурация безопасности открытого класса Spring{ } мы также можем обойти защиту spring, разрешив все запросы
@@Конфигурация общедоступного класса Spring Security Config { @Цепочка веб-фильтров общедоступной безопасности компонента FilterChain(СерверHttpSecurity http){ http.authorizeExchange().Anyexchange().PermitAll(); возвращает http.build(); } }
- Как написать интеграционный тест в Spring Boot? Spring Boot предоставляет ряд утилит и аннотаций, которые помогут при тестировании вашего приложения. Spring Boot предоставляет аннотацию @SpringBootTest для интеграционного тестирования. Аннотация @SpringBootTest работает путем создания ApplicationContext, используемого в наших тестах. @@Springboost также предоставляет различные настройки.
@Бежать с(SpringRunner.class ) @SpringBootTest тест на интеграцию с общедоступным классом{ }
- Как протестировать только уровень базы данных (JPA) в Spring Boot? Мы можем использовать аннотацию @DataJpaTest для тестирования уровня базы данных. По умолчанию он настраивает встроенную базу данных в памяти, например базу данных H2. Он сканирует компоненты @Entity и настраивает репозитории Spring Data JPA. Обычные компоненты @Component не загружаются в ApplicationContext. Также по умолчанию тесты data JPA являются транзакционными и откатываются в конце каждого теста.
@Бежать с(SpringRunner.class ) @DataJpaTest тест базы данных открытого класса{
} Мы можем внедрить компонент TestEntityManager, который предоставляет альтернативу стандартному JPA EntityManager, специально разработанному для тестов. Аналогично, Spring Boot предоставляет аннотацию @DataMongoTest для тестирования MongoDB и аннотацию @DataRedisTest для тестирования приложений Redis.
- Как настроить две базы данных и два EntityManager в Spring Boot? Чтобы использовать несколько баз данных в нашем приложении, мы должны создать ваш собственный компонент источника данных.
первый.url = [url] …
второй.url = [url] ….
@Компонент(“db1”) @Первичный ) общедоступный источник данных primaryDataSource() { возвращает DataSourceBuilder.create().build(); }
@@Компонент(“db2”) ) общедоступный источник данных вторичный источник данных() { возвращает DataSourceBuilder.create().build(); } Аналогично, мы можем создать несколько EntityManager, настроив компонент. Пружинный ботинок обеспечивает EntityManagerBuilder для удобства.
@Компонент(“em1”) общедоступный локальный контейнер entitymanagerfactorybean em1( конструктор entitymanagerfactorybuilder) { возвращает конструктор .Источник данных(customdatasource1()) .пакеты(DataSource.class ) .сборка(); }
@@Компонент(“em 2”) общедоступный локальный контейнер entitymanagerfactorybean em 2( конструктор entitymanagerfactorybuilder) { возврат …; }
- Как настроить поддержку множественного согласования содержимого для возврата XML или JSON? Мы можем перезаписать метод Configurecontentnegotiation в нашем классе конфигурации WebMvcConfigurerAdapter.
@Переопределить общедоступную недействительную конфигурацию(конфигуратор содержимого) { …. defaultcontenttype(тип среды.APPLICATION_JSON). Медиатип (“xml”, медиатип. APPLICATION_XML). Медиатип (“json”, медиатип.APPLICATION_JSON); } }
производит = { “приложение/json”, “приложение/xml” }
- Как зарегистрировать сервлет, фильтр и прослушиватель в Spring Boot? При использовании встроенного сервера мы можем регистрировать сервлеты, фильтры и прослушиватели с помощью компонентов Spring или путем сканирования компонентов сервлетов.
мы можем использовать компонент FilterRegistrationBean для регистрации фильтра, ServletRegistrationBean для регистрации сервлета и ServletListenerRegistrationBean для регистрации прослушивателя.
@Bean общедоступный фильтррегистрацииbean custfilter() { фильтррегистрацииbean фильтррегистрацииbean(); регистрация.setFilter(новый myFilter()); возврат регистрации; } https://practiceoverflow.com/take-test/sieWV1ypGBd7iBKoT3Nu/Spring-Boot-IQ-Test-2019:-contains-top-20-questions-to-practice-your-Spring-boot-knowledge
Оригинал: “https://dev.to/anilkkurmi/spring-boot-interview-questions-5ao8”