Анонимный весенний боб - PullRequest
4 голосов
/ 25 октября 2010

Чем полезен анонимный Spring bean?

Ответы [ 3 ]

12 голосов
/ 25 октября 2010

Есть два варианта использования, о которых я могу думать прямо.

в качестве внутреннего компонента

<bean id="outer" class="foo.bar.A">
  <property name="myProperty">
    <bean class="foo.bar.B"/>
  </property>
</bean>

в качестве конфигуратора статических свойств

public class ServiceUtils {

      private static Service service;

      private ServiceUtils() {}
      ...

      public static void setService(Service service) {
        this.service = service;
      }
    }

    public class ServiceConfigurer {
      private static Service service;

      private ServiceUtils() {}
      ...

      public void setService(Service service) {
        ServiceUtils.setService(service);
          }
    }

Теперь этот класс можно настроить следующим образом.

<bean class="foo.bar.ServiceConfigurer">
    <property name="service" ref="myService"/>
</bean>

Кроме того, если существует компонент, от которого не зависит ни один компонент, например RmiServiceExporter или MessageListenerContainer, тогда нет необходимости, кроме ясности кода, чтобы дать этому бину имя.

4 голосов
/ 25 октября 2010

В дополнение к уже предоставленным ответам (внутренний компонент, жизненно важные интерфейсы, конфигуратор статических свойств) я хотел бы получить еще один, который мы часто используем. То есть ...

  • в сочетании с автопроводкой (по типу). Когда вы конфигурируете несколько объектов данного типа, и вам все равно, как они называются в XML.
4 голосов
/ 25 октября 2010

Существует несколько вариантов использования:

  • бин, внедренный как зависимость в другом бине
  • bean-компонент, который реализует InitializingBean и DisposableBean, поэтому его методы вызываются контейнером IoC
  • компонент, реализующий BeanClassLoaderAware, BeanFactoryPostProcessor и другие интерфейсы обратного вызова
...