Зачем использовать CDI в Java EEJAVA

Программисты JAVA общаются здесь
Anonymous
Зачем использовать CDI в Java EE

Сообщение Anonymous »

Я знаю, что есть много статей, которые объясняют, как использовать CDI в Java EE, но у меня проблемы с выяснением, какое преимущество это на самом деле приносит. Например, предположим, что у меня есть класс, который в настоящее время использует экземпляр Foo. Я мог бы либо сделать < /p>

Код: Выделить всё

Foo myFoo = new Foo();
< /code>

или < /p>

// Better, FooFactory might return a mock object for testing
Foo myFoo = FooFactory.getFoo();
< /code>

Я продолжаю читать это с CDI, я могу сделать: < /p>

@Inject
Foo myFoo;
< /code>

Но почему это лучше, чем предыдущий заводский подход? Я предполагаю, что есть какой -то другой случай использования, о котором я не знаю, но я не смог идентифицировать это. < /p>

Если я понял ответы ниже, концепция заключается в том, что DI -структура действует как фабрика мастера объекта, которая настроена центрально. Это разумная интерпретация? Приведенный ниже абзац взят из  Spring на практике , взяв пример класса AccountService 
, который, в свою очередь, использует экземпляр AccountDao . Я прошу прощения за длинную цитату, но я думаю, что это действительно становится суть того, почему инъекционные ресурсы предлагают что -то по стандартной инициализации. < /p>

Вы могли бы построить Accostervice, используя новое ключевое слово, но создание объектов сервисного уровня редко бывает настолько простым. Они часто зависят от DAO, отправителей почты, прокси -мыльных и чего -то еще. Вы можете создать экземпляр каждой из этих зависимостей, программно, программно в конструкторе Accountservice (или посредством статической инициализации), но это приводит к жестким зависимостям и каскадным изменениям по мере их замены. Это устранило бы жесткие внутренние зависимости (если они были объявлены в счете с помощью интерфейса), но у вас будет дублированный код инициализации везде. Вот как вы создаете DAO и проводите его
до вашего счета Spring Way: < /em> < /p>






< /code>

Настроив бобы, как указано выше, ваша программа теперь может запросить экземпляр Accountervice < /code> из Spring ApplicationContext, и Spring Di Framework будет следить за созданием всего, что требует создания.


Подробнее здесь: https://stackoverflow.com/questions/130 ... in-java-ee

Вернуться в «JAVA»