Я читал учебник JavaEE 6 и, читая разделы SessionBean и CDI, я наткнулся на несколько сомнений.SessionBeans и CDI vs POJO classes
1) Для того, что я понял, аннотация @EJB
вводит SessionBean, что приводит к использованию шаблона Injectency Inject. Я понимаю, что эта схема направлена на отмену ответственности того, кто строит объекты. Таким образом, вместо определенного класса, создающего его собственные зависимости, он получит их в конструкторе. Однако, как аннотация @EJB
смягчает проблемы не впрыскивания зависимостей? То же самое касается аннотации @Inject
.
2) У меня есть этот класс утилиты (содержит только статические методы), который форматирует дату в несколько форматов (yyyy-MM-dd, dd-MM-yyyy и т. Д.). Лучше ли использовать этот сеанс без статусов для этих методов или я должен сохранить класс Utility? В случае использования EJB для этого, в чем разница между его использованием или использованием компонента с помощью аннотации @Inject
?
3) При использовании Injection Dependency имеет смысл использовать шаблоны Service Locator или Factory? (Хотя я видел, что Service Locater регистрируется как анти-шаблон).
Что я имел в виду, так как аннотация EJB делает класс не зависящим от компонента? В чем основное отличие наличия this.bean = new Bean(); или @EJB Bean bean? В конце концов, обе реализации сделают класс зависимым от Bean, не так ли? Или я смешиваю понятия здесь? –
Точка инъекции зависимостей не должна устранять зависимости. Его задача - ввести их снаружи.Это позволяет вручную вводить поддельные зависимости в модульные тесты. –
Итак, больше исследований заставляет меня поверить, что Dependency Injection фактически работает больше ни в чем, кроме Unit Unit, чтобы упростить набор макетов. Я пытался понять, как это помогает, кроме этого. –