Ich lerne für die Spring Core-Zertifizierung und habe diese Fragen, aber ich kann keine Antwort darauf geben.
Warum müssen Sie in Ihrer @Configuration einen Standardkonstruktor haben? annotierte Klasse?
Ich deklariere keinen Konstruktor in meinen Konfigurationsklassen, die durch die Annotation @Configuration gekennzeichnet sind. Der Standardkonstruktor wird von der Superklasse geerbt? oder was? Warum muss ich einen Standardkonstruktor haben und ich kann ihn nicht überschreiben?
Tnx
Nach offiziellem Frühjahrsjavadoc , Spring @Configuration Annotated-Klassen müssen den Standard-Konstruktor no-arg haben
@Configuration-Klassen müssen einen default / no-arg-Konstruktor haben und dürfen keine @Autowired-Konstruktorparameter verwenden. Alle geschachtelten Konfigurationsklassen müssen statisch sein
Der Grund dafür ist, dass der Frühling CGLIB zu proxy @Configuration Klassen und es gibt Einschränkungen im Frühjahr, Für die Klassen, die mit CGLIB vor Version 4 proxiediert wurden, muss der Standard-Konstruktor für Nicht-Argumente vorhanden sein.
Vor Spring 4 erfordern CGLIB-basierte Proxy-Klassen einen Standardkonstruktor. Und dies ist nicht die Beschränkung der CGLIB-Bibliothek, sondern Spring selbst. Glücklicherweise ist dies ab dem 4. Frühjahr kein Problem mehr. CGLIB-basierte Proxy-Klassen benötigen keinen Standardkonstruktor mehr.
Tags und Links java spring spring-mvc annotations applicationcontext