Глоссарий ликбез DI IoC


Spring – это свободно распространяемый фреймворк, созданный Родом Джонсоном (Rod Johnson) и описанный в его книге «Expert One-on-One: J2EE Design and Development».

Он был создан с целью устранить сложности разработки корпоративных приложений и сделать возможным использование простых компонентов JavaBean для достижения всего того, что ранее было возможным только с использованием EJB.

Однако область применения Spring не ограничивается разработкой программных компонентов, выполняющихся на стороне сервера. Любое Java-приложение может использовать преимущества фреймворка в плане простоты, тестируемости и слабой связанности .

Собеседование по Java EE — Spring Framework (вопросы и ответы). Часть

 

POJO (обычный Java-объект). Компоненты JavaBean (также называемые POJO (Plain Old Java Object — простой старый объект Java)) 

JPA  -  Java Persistence API — спецификация API Java EE, предоставляет возможность сохранять в удобном виде Java-объекты в базе данных. 

Внедрение зависимости (Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту. Является специфичной формой «инверсии управления» ( Inversion of control, IoC)

IoC - механизм для предоставления зависимостей компонента (часто называемых коллабораторами объекта) и управления этими зависимостями на протяжении всего их жизненного цикла. В общем случае IoC может быть расщеплена на два подтипа: инверсия управления (Dependency Injection) и поиск зависимости (Dependency Lookup). 

 

Dependency Inversion Principle дает рекомендации о том, какими должны быть зависимости. Это как раз то, что вы процитировали:

  • Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Вы также могли слышать о Dependency InjectionВнедрение зависимостей является связующим звеном между IoC и DIP. Это один из способов реализации инверсии управления.

DAO (data access object) — один из наиболее распространенных паттернов проектирования, "Доступ к данным". Его смысл прост — создать в приложении слой, который отвечает только за доступ к данным, и больше ни за что.

AOP - Аспектно-ориентированное программирование (АОП) — т.е. логики, которая применяется к множеству частей приложения — Основной задачей является модуляризация сквозной функциональности, выделение её в аспекты

 destructuring (дестракчеринг или деструктуризация) -  [$firstName, $lastName] = $arr

 

 

  • Внедрение зависимостей (DI) и инверсия управления (IoC) позволяют писать независимые друг от друга компоненты, что дает преимущества в командной разработке, переносимости модулей и т.д..
  • Spring IoC контейнер управляет жизненным циклом Spring Bean и настраивается наподобие JNDI lookup (поиска).
  • Проект Spring содержит в себе множество подпроектов, которые затрагивают важные части создания софта, такие как вебсервисы, веб программирование, работа с базами данных, загрузка файлов, обработка ошибок и многое другое. Всё это настраивается в едином формате и упрощает поддержку приложения.

 

Что класть в контекст
• Бизнес-сервисы (DAO, Services)
• Подключения к внешним системам
• Мапперы/Маршаллеры/конвертеры
• Служебные бины (PersistenceContextManager...)
• Бизнес-бины стратегий (Паттерн стратегия)

 

Что не нужно класть
• Бизнес-объекты (бины, пользователи*)
• Настройки, кроме пачек/файлов настроек*
• Объекты, которые пондаобятся только один раз в один
момент (временные)