Вопросы 31-40 для разработчиков
Ответ: Интерфейс ApplicationContext управляет всеми Spring beans. Можно получить имена всех зарегистрированных beans, используя метод getBeanDefinitionNames().
Ответ: Да, можно проверить свойства окружения в Spring Boot приложении. Для этого используется объект Environment в Spring Boot приложении.
Экземпляр Environment можно получить вызовом метода getEnvironment().
Ответ: Debug-логирование предоставляет детальную информацию о запуске приложения, автоконфигурации, создании bean'ов и обработке запросов.
logging.level.org.springframework=DEBUG
java -jar application.jar --debug
Ответ: Dependency Injection (DI) — это паттерн проектирования, в котором Spring IoC контейнер автоматически предоставляет требуемые зависимости объекту вместо того, чтобы объект создавал их сам. Это способствует слабой связанности, упрощает тестирование и улучшает сопровождаемость кода.
Ответ: Inversion of Control (IoC) Container — это ключевой компонент Spring Framework, который создаёт, конфигурирует, управляет и уничтожает Spring beans. Он также автоматически выполняет Dependency Injection.
Ответ: Основная разница в том, что Constructor Injection предоставляет зависимости через конструктор класса, а Setter Injection предоставляет зависимости через setter-методы.
| Критерий | Constructor Injection | Setter Injection |
|---|---|---|
| Способ внедрения | Использует параметры конструктора | Использует setter-методы |
| Тип зависимости | Лучше для обязательных зависимостей | Лучше для опциональных зависимостей |
| Неизменяемость | Зависимости нельзя изменить после создания объекта | Зависимости можно изменить позже |
| Null-безопасность | Предотвращает частично инициализированные объекты | Может допускать объекты с отсутствующими зависимостями |
| Тестируемость | Легче тестировать | Немного сложнее тестировать |
| Рекомендация | Рекомендуется в Spring Boot | Используется для опциональных или конфигурируемых зависимостей |
Ответ: Bean Scope определяет жизненный цикл и видимость bean в Spring IoC контейнере. Он определяет, сколько экземпляров bean создаётся и как долго они остаются доступными.
| Scope | Описание |
|---|---|
| singleton | Scope по умолчанию. Создаётся только один экземпляр bean на контейнер Spring |
| prototype | Новый экземпляр bean создаётся при каждом запросе |
| request | Новый экземпляр bean создаётся для каждого HTTP-запроса. Доступен только в веб-приложениях |
| session | Новый экземпляр bean создаётся для каждой HTTP-сессии |
| application | Один экземпляр bean используется на протяжении всего жизненного цикла веб-приложения |
| websocket | Один экземпляр bean создаётся для каждой WebSocket-сессии |
Ответ: Singleton scope — это scope по умолчанию в Spring.
Ответ: Основные различия перечислены ниже:
| Критерий | Singleton Scope | Prototype Scope |
|---|---|---|
| Количество экземпляров | Один экземпляр на контейнер Spring | Новый экземпляр для каждого запроса |
| Scope по умолчанию | Да | Нет |
| Управление жизненным циклом | Полностью управляется Spring | Spring управляет только созданием |
| Потребление памяти | Ниже | Выше |
| Лучше всего подходит для | Beans без состояния (Services, Repositories) | Объектов с состоянием или временных объектов |
Ответ: Prototype scope следует использовать, когда каждому запросу или операции нужен новый экземпляр bean и bean хранит собственное состояние.