没有默认构造函数的类在spring中的bean类实例化

时间:2012-05-18 08:27:18

标签: spring constructor default-constructor

我在我的模型中使用第三方库类XYZ作为参数。 XYZ没有默认构造函数。所以spring无法创建bean,因为它给出了错误消息

org.springframework.web.util.NestedServletException: Request processing failed; 

nested exception is org.springframework.data.mapping.model.MappingInstantiationException: 

Could not instantiate bean class [org.abc.def.XYZ]: No default constructor found;nested exception is java.lang.NoSuchMethodException: org.abc.def.XYZ./<init/>()
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:681)

我该怎么做才能解决这个问题?我无法将默认构造函数添加到XYZ。

我在我的调度程序servlet中添加了以下内容,但它仍然不起作用。

<bean name="token" class="org.abs.def.Xyx">
    <constructor-arg name="arg1" value="val1"/>
    <constructor-arg name="arg2" value="val2"/>
    <constructor-arg name="arg3" value="val3"/>
</bean>

感谢。

2 个答案:

答案 0 :(得分:3)

您可以在XML文件中将其定义为传递所有必要参数的spring bean来实例化它。

样品:

<bean id="xyz" class="com.a.b.Xyz" >
    <constructor-arg index="0" ref="anotherBean"/>
    <constructor-arg index="1" value="12"/> 
</bean>

答案 1 :(得分:0)

您需要在应用程序上下文配置文件中提供<constructor-arg>个元素,如the documentation中所述。