2011-01-27 68 views
5

如何在Spring中使用Abstrarct工廠方法模式時指定正確的bean refrences。Spring將正確的bean引用指定爲工廠方法參數

我在Spring dispatcher-servlet.xml上得到構造函數參數錯誤。

錯誤:

曖昧工廠方法的參數類型 - 你指定正確的bean引用作爲工廠方法參數?

短調度-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

回答

3

如果您findCategory工廠以給定的枚舉,那麼Spring這一切都爲你。

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

在Spring如果你想使用一個工廠方法

<constructor-arg value="A" /> 
+0

我不想發起參數的值。我希望抽象工廠方法在運行時傳遞該值。我是否必須爲爭論發起價值? – mkohan 2011-01-27 17:51:56

1
  1. 懶惰初始化,如果可能的
  2. 豆,沒有經過任何構造函數參數中豆配置,使用

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

    指定空參數