Что означает «компонент X вводится в компонент Y» в контексте среды Spring - PullRequest
0 голосов
/ 06 мая 2010

Кажется, это очень простой вопрос.
В любом случае, из следующих руководств Spring невозможно понять значение следующего определения - "компонент X вводится в компонент Y" .

Означает ли это композиционное отношение между классами (когда один компонент имеет ссылку на другой)? Или это нечто большее?

Спасибо за ответ или ссылку с объяснением.

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Да, вопрос очень простой.Внедрение зависимостей является одной из основных функций Spring Framework.Классы Java должны быть как можно более независимыми, это увеличивает гибкость для повторного использования классов и тестирования классов независимо.Для такого разъединения зависимость одного класса от другого класса должна вводиться в них третьей стороной, а не сам класс создает другой объект.

В среде Spring легковесный контейнер, называемый основным контейнером Spring, выполняет внедрение зависимостей.т. е. этот контейнер будет вводить необходимые зависимости в требуемые объекты.

В веб-приложении будет класс контроллера, класс обслуживания, класс dao и т. д. В классе контроллера будет ссылка на класс обслуживания в службекласс будет ссылка на класс дао.При использовании Spring зависимости могут быть настроены с использованием XML или аннотации или конфигурации Java.

Взять сценарий между классом контроллера (MyController.java) и классом обслуживания (MyService.java),

В файле конфигурации xml мы определяем зависимость следующим образом:

<bean id="myService" class="com.service.MyService"/>
<bean id="myController" class="com.web.MyController">
<property name="myService" ref="myService">
</bean>

При создании компонента контроллера зависимость будет разрешена основным контейнером.

0 голосов
/ 07 мая 2010

Это скорее ассоциация. Композиция подразумевает, что жизненный цикл bean1 полностью зависит от bean2, а это не так. Может быть компонент с идентификатором = bean3, который может зависеть от компонента 1. Например,

<bean id = "bean3" class = "com.foo.Foo">
  <property name = "aProperty" ref = "bean1" />
</bean>

В этом случае bean3 также связан с bean 1 и не управляет жизненным циклом bean 1. Однако Spring поддерживает композицию с использованием внутренних компонентов. Это не композиция как таковая, но новый экземпляр компонента может быть подключен внутри другого компонента. Пример этого приведен ниже

<bean id = "bean3" class ="com.foo.Foo">
   <property name = "aProperty">
         <bean class = "com.bar.Bar">
            Wire dependencies here.
         </bean>
   </property>
</bean>

Вам не нужно использовать атрибут id для идентификации внутреннего компонента, так как он будет игнорироваться контейнером Spring. Для получения дополнительной информации о внутреннем компоненте эта ссылка будет более чем полезной. http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-inner-beans

0 голосов
/ 06 мая 2010

Это просто означает, что вы создали компонент с именем в контексте приложения и используете ссылку на этот компонент в качестве значения свойства для другого определения компонента.

<bean name="bean1" class="com.example.A">
    <property name="property" value="hello" />
</bean> 
<bean id="bean2" class="com.example.B">
    <property name="aProperty" ref="bean1" />
    <property name="x" value="Test" />
</bean>

В этом примере компонент с именем bean1 внедряется в bean2 . Я не думаю, что есть что-то еще.

...