我想注入一個構造函數,它需要一些參數。在編譯Spring抱怨之後,它找不到默認構造函數(我沒有定義它)並拋出BeanInstatiationException和NoSuchMethodException。Spring注入中需要默認構造函數嗎?
定義默認構造函數後,異常不再出現,但是我的對象永遠不會使用參數構造函數初始化,只調用默認構造函數。在這種情況下,Spring是否真的需要默認構造函數?如果是的話,我怎樣才能使用參數構造函數而不是默認的?
這是我的接線一切:
public class Servlet {
@Autowired
private Module module;
(code that uses module...)
}
@Component
public class Module {
public Module(String arg) {}
...
}
bean的配置:
<beans>
<bean id="module" class="com.client.Module">
<constructor-arg type="java.lang.String" index="0">
<value>Text</value>
</constructor-arg>
</bean>
...
</beans>
堆棧跟蹤:
WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xsd
ERROR initWebApplicationContext, Context initialization failed
[tomcat:launch] org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'module' defined in URL [...]: Instantiation of bean failed;
nested exception is org.springframework.beans.BeanInstantiationException: Could not
instantiate bean class [com.client.Module]: No default constructor found; nested
exception is java.lang.NoSuchMethodException: com.client.Module.<init>()
Spring不需要默認(意思是無參數,對吧?)構造函數。添加stacktrace到帖子,否則我認爲我們沒有足夠的信息來告訴發生了什麼。 –
添加了堆棧跟蹤。是的,默認情況下,我的意思是無參數構造函數。 – agerrr