2013-11-19 3 views
0

Я хотел видеть, когда инъекция сеттера действительно происходит весной, и отлаживает мой код для этого. Кажется, что как инъекция конструктора, так и сеттера происходит, когда выполняется первая строка. Мне интересно, если служба, которая будет иметь введенную зависимость, заметит разницу вообще? По-моему, это не так? Если нет, тогда где же разница?Весна Установка времени инициализации впрыска

ApplicationContext context = new ClassPathXmlApplicationContext("spring-module.xml");   
    //Both setting and constructor dependencies are initialized at this point. 
    CampaignManager cm = (CampaignManager) context.getBean("campaignManager"); 
+0

Инъекция конструктор происходит, когда конструктор выполняется инъекция сеттер - после того, как объект создан. –

ответ

1

Существует несколько отличий между конструктором и установкой установки.

  1. сеттер инъекции не гарантировать, что инъекции произошло при создании объекта. Вы не можете гарантировать, что произошла определенная инъекция, например. может существовать объект с неполной зависимостью, , а инъекция конструктора не позволяет создавать объекты до их создания зависимостей.

  2. Если имеется циклическая зависимость между двумя бобами (например, A зависит от B и B зависит от A) Весны будет бросать ObjectCurrentlyInCreationException при использовании инъекции конструкторы, в то время как при использовании сеттер инъекции Spring создает и бобы перед вызовом метода setter.

  3. Использовать инъекцию конструктора, когда должен быть создан компонент, все его зависимости.

  4. Использовать инъекцию сеттера, когда количество зависимостей огромно.

Подробнее:

Смежные вопросы