Код: Выделить всё
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 Вы могли бы построить Accostervice, используя новое ключевое слово, но создание объектов сервисного уровня редко бывает настолько простым. Они часто зависят от DAO, отправителей почты, прокси -мыльных и чего -то еще. Вы можете создать экземпляр каждой из этих зависимостей, программно, программно в конструкторе Accountservice (или посредством статической инициализации), но это приводит к жестким зависимостям и каскадным изменениям по мере их замены. Это устранило бы жесткие внутренние зависимости (если они были объявлены в счете с помощью интерфейса), но у вас будет дублированный код инициализации везде. Вот как вы создаете DAO и проводите его
до вашего счета Spring Way: < /em> < /p>
< /code>
Настроив бобы, как указано выше, ваша программа теперь может запросить экземпляр Accountervice < /code> из Spring ApplicationContext, и Spring Di Framework будет следить за созданием всего, что требует создания.
Подробнее здесь: https://stackoverflow.com/questions/130 ... in-java-ee