Próbuję wstawić konstruktor, który ma pewne argumenty. Po kompilacji Spring narzeka nie może znaleźć domyślnego konstruktora (nie zdefiniowałem go) i wyrzuca BeanInstatiationException i NoSuchMethodException.Czy domyślny konstruktor jest wymagany przy wtrysku sprężyny?
Po zdefiniowaniu domyślnego konstruktora wyjątki nie są już wyświetlane, jednak mój obiekt nigdy nie jest inicjowany za pomocą konstruktora argumentów, wywoływany jest tylko domyślny. Czy Spring naprawdę wymaga w tym przypadku domyślnego konstruktora? A jeśli tak, jak mogę użyć konstruktora argumentów zamiast domyślnego?
To jak ja podłączyć wszystko: konfigurację
public class Servlet {
@Autowired
private Module module;
(code that uses module...)
}
@Component
public class Module {
public Module(String arg) {}
...
}
Fasola:
<beans>
<bean id="module" class="com.client.Module">
<constructor-arg type="java.lang.String" index="0">
<value>Text</value>
</constructor-arg>
</bean>
...
</beans>
Ślad stosu:
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>()
Wiosna nie wymaga domyślnego konstruktora (czyli nie-args, prawda?). Dodaj stos stosu do postu, w przeciwnym razie nie sądzę, że mamy wystarczająco dużo informacji, aby powiedzieć, co się dzieje. –
Dodano ślad stosu. I tak, domyślnie mam na myśli konstruktor no-args. – agerrr