Ich versuche, einen Konstruktor zu injizieren, der einige Argumente benötigt. Nach der Kompilierung von Spring beschwert es sich, dass es keinen Standardkonstruktor finden konnte (ich habe es nicht definiert) und BeanInstatiationException und NoSuchMethodException ausgelöst.Ist der Standardkonstruktor für die Spring-Injektion erforderlich?
Nach dem Definieren eines Standardkonstruktors erscheinen die Ausnahmen nicht mehr, jedoch wird mein Objekt niemals mit dem Argumentkonstruktor initialisiert, nur der Standardkonstruktor wird aufgerufen. Benötigt Spring in diesem Fall wirklich einen Standardkonstruktor? Und wenn ja, wie kann ich den Argumentkonstruktor anstelle des Standardkonstruktors verwenden?
Dies ist, wie ich alles anschließen:
public class Servlet {
@Autowired
private Module module;
(code that uses module...)
}
@Component
public class Module {
public Module(String arg) {}
...
}
Bean-Konfiguration:
<beans>
<bean id="module" class="com.client.Module">
<constructor-arg type="java.lang.String" index="0">
<value>Text</value>
</constructor-arg>
</bean>
...
</beans>
Stapelüberwachung:
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 erfordert keinen Standardkonstruktor (dh keine Argumente, richtig?). Fügen Sie den StackTrace dem Post hinzu, sonst glaube ich nicht, dass wir genug Informationen haben, um zu sagen, was vor sich geht. –
Der Stack-Trace wurde hinzugefügt. Und ja, standardmäßig meine ich No-Args-Konstruktor. – agerrr