代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

无名春豆

  •  4
  • fastcodejava  · 技术社区  · 15 年前

    3 回复  |  直到 15 年前
        1
  •  13
  •   Don Kirkby    12 年前

    我可以直接想到两个用途。

    作为一个内豆

    <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

        2
  •  4
  •   Eugene Kuleshov    15 年前

    有几种用途:

    • 实现initializengbean和DisposableBean的bean,因此他的方法由IoC容器调用
    • 实现beanclassloaderware、BeanFactoryPostProcessor和其他回调接口的bean
        3
  •  4
  •   Grzegorz Oledzki    15 年前

    除了已经提供的答案(内部bean、生命管理接口、静态属性的配置器)之外,我还将提供另一个答案,我们经常使用这个答案。那就是。。。

    • 结合自动布线(按类型)。当您配置多个给定类型的对象时,实际上并不关心它们在XML中是如何调用的。