Spring将正确的bean引用指定为工厂方法参数

时间:2011-01-27 16:20:50

标签: spring-mvc

如何指定正确的bean引用,当我使用带有Spring的Abstrarct工厂方法模式时。

我在Spring dispatcher-servlet.xml上得到构造函数参数错误。

错误:

  

不明确的工厂方法参数类型 - 您是否将正确的bean引用指定为工厂方法参数?

short dispatcher-servlet.xml

<bean id="myFactory" class="cwsei.spring.dao.CategoryFactory" factory-method="findCategory">
<constructor-arg type="java.lang.Enum" value="${categoryType}" />
</bean>

这是我的代码:

public abstract class Category {
public abstract List list(int departId);
..
}
public class CategoryFactory {

public enum CategoryType { firstclass,secondClass,...}

public static Category findCategory(CategoryType categoryType) {
...
}
}

谢谢, mkohan

2 个答案:

答案 0 :(得分:3)

如果你的findCategory工厂需要一个给定的枚举,那么Spring会为你完成所有工作。

e.g

public class enum X { A, B }
public CategoryFactory findCategory( X someX ) 

现在在春天

<constructor-arg value="A" />

答案 1 :(得分:1)

  1. 如果可能,Lazy初始化bean
  2. 如果要使用工厂方法并且不在bean配置中传递任何构造函数参数,请使用

    <constructor-arg><null/></constructor-arg> 
    

    指定空参数