《Spring Recipes》第二章笔记:Creating Beans by Invokin...

Spring Recipes》第二章笔记:Creating Beans by Invoking a Static Factory Method


问题

在容器中配置实用静态工厂方法实例化的bean。

解决方案

Spring的bean元素中提供了factory-method属性来配置静态工厂方法。

例:
bean:
public class ProductCreator {
  public static Product createProduct(String productId) {
    if ("aaa".equals(productId)) {
      return new Battery("AAA", 2.5);
    } else if ("cdrw".equals(productId)) {
      return new Disc("CD-RW", 1.5);
    }
    throw new IllegalArgumentException("Unknown product");
  }
}

配置文件:如果静态工厂方法需要传入参数,可以使用constructor-arg元素进行配置。
<beans ...>
  <bean id="aaa" class="com.apress.springrecipes.shop.ProductCreator"
    factory-method="createProduct">
      <constructor-arg value="aaa" />
  </bean>

  <bean id="cdrw"  class="com.apress.springrecipes.shop.ProductCreator"
    factory-method="createProduct">
      <constructor-arg value="cdrw" />
   </bean>

</beans>



你可能感兴趣的:(spring)