我正在尝试注入一个带有一些参数的构造函数。编译 Spring 后抱怨找不到默认构造函数(我没有定义它)并抛出 BeanInstatiationException 和 NoSuchMethodException。
定义默认构造函数后,异常不再出现,但是我的对象从未使用参数构造函数初始化,只调用默认构造函数。在这种情况下,Spring 真的需要默认构造函数吗?如果是的话,我怎样才能让它使用参数构造函数而不是默认构造函数?
这就是我连接所有东西的方式:
public class Servlet {
@Autowired
private Module module;
(code that uses module...)
}
@Component
public class Module {
public Module(String arg) {}
...
}
豆配置:
<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>()