Sto provando a iniettare un costruttore che accetta alcuni argomenti. Dopo aver compilato i reclami di Spring, non è stato possibile trovare un costruttore predefinito (non l'ho definito) e lancia BeanInstatiationException e NoSuchMethodException.È richiesto il costruttore predefinito in Spring injection?
Dopo aver definito un costruttore predefinito, le eccezioni non vengono più visualizzate, tuttavia il mio oggetto non viene mai inizializzato con il costruttore di argomenti, viene chiamato solo quello predefinito. Spring richiede davvero un costruttore predefinito in questo caso? E se sì, come posso usare il costruttore di argomenti invece di quello predefinito?
È così possibile cablare tutto: configurazione
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>
traccia stack:
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 non richiede un costruttore predefinito (ovvero no-args, giusto?). Aggiungi lo stacktrace al post, altrimenti non penso che abbiamo abbastanza informazioni per dire cosa sta succedendo. –
Aggiunta la traccia dello stack. E sì, per impostazione predefinita intendo costruttore no-args. – agerrr