Прицельный обзор: Как создаются бины в Spring Framework

| Комментарии

Основной интерфейс - BeanFactory. Основной метод - getBean. Его расширяют такие интерфейсы как:

  • ListableBeanFactory для доступа к спискам экземпляров созданных bean’ов
  • HierarchicalBeanFactory для организации иерархичных фабрик бинов
  • ConfigurableBeanFactory определяет методы, конфигурирующие бины

Прицельный обзор: Как работает Dependency Injection в Spring Framework

| Комментарии

Для того, чтобы ответить на этот вопрос, нужно определить точку входа. Для начала организуется контекст приложения - вручную для стандартных приложений или автоматически при использовании Spring‘а в Web. Сразу хочу отметить, Spring Framework отличается высоким уровнем абстракции. Немалая часть реализации организуется путем глубокого наследования (5-6 уровней). Так ApplicationContext компонует в себе общий функционал по работе с состоянием приложения путем реализации нескольких интерфейсов. Затем, делая cast к тому или иному интерфейсу, можно работать с определенным функционалом. К примеру:

Mockito: Как создаются Mock’и

| Комментарии

Работа с Mockito начинается, как ни странно, с класса org.mockito.Mockito. Этот класс содержит в себе несколько статичных методов, которые обычно и импортируются в тест-класс. Первое же, что бросается в глаза, это огромные JavaDoc комментарии. Разработчики решили вести настоящий Tutorial прямо в коде. Обнаружить код среди такого обилия комментариев без использования инструментов IDE весьма непросто. Класс Mockito делегирует все вызовы классу org.mockito.internal.MockitoCore. Если класс Mockito - точка входа внешнего API, то MockitoCore - точка входа во внутреннюю реализацию проекта.

Mockito: @InjectMocks

| Комментарии

Процесс внедрения mock’ов разделен на несколько этапов:

  1. Поиск полей, отмеченных аннотацией @InjectMocks
  2. Поиск мок объектов в тесте
  3. Внедрение найденных моков в поля, помеченные аннотацией @InjectMocks

Mockito: Обработка аннотаций

| Комментарии

Как говорилось ранее, метод MockitoAnnotations#initMocks инициализирует объекты, аннотированные одной из ключевых аннотаций (@Spy, @Mock, @Captor, @InjectMocks). Сегодня мы увидим как обрабатываются аннотации. Архитектура должна быть гибкой, чтобы позволить удобно добавлять новые аннотации.

Mockito: Использование аннотаций

| Комментарии

Mockito поддерживает аннотации с 0.9’ой версии. В той версии была введена аннотация @Mock, которая позволяет создавать mock-объекты. Далее были добавлены и другие аннотации:

  • @Spy создает spy-объекты
  • @Captor создает экземпляр ArgumentCapture
  • @InjectMocks внедряет mock- и spy- объекты в аннотированный объект
  • @Incubating определяет недавно добавленный класс, с возможностью его изменения.

Mockito: Структура проекта

| Комментарии

Mockito - библиотека для динамического создания mock-объектов и манипуляции ими. Разработка начата в 2007’ом году польским разработчиком Стивеном Фабером (Szczepan Faber). Первый релиз выпущен в 2008’ом. Последний в начале июня 2012’го. Официальный сайт находится на Google Code’e. Issue Tracker и Wiki там же, но в репозитории сохранились текстовые файлы с заметками и планами на будущее.