Spring boot Kein Standardkonstruktor in der @ SpringBootApplication-Klasse gefunden

8

Ich frage mich, warum die Feldinjektion in der Klasse @SpringBootApplication funktioniert und die Konstruktorinjektion nicht.

Mein ApplicationTypeBean funktioniert wie erwartet, aber wenn ich eine Konstruktorinjektion von CustomTypeService haben möchte, erhalte ich diese Ausnahme:

%Vor%

Gibt es einen Grund, warum es bei @SpringBootApplication class nicht funktioniert?

Meine SpringBootApplication-Klasse:

%Vor%

Meine @Service-Klasse:

%Vor%

Meine @Component-Klasse:

%Vor%     
Patrick 18.04.2016, 14:26
quelle

1 Antwort

6

SpringBootApplication ist eine Meta-Anmerkung, die:

%Vor%

Also baiscally, Ihre ThirdPartyGlobalAndCustomTypesApplication ist auch eine Spring Configuration -Klasse. As Configuration s javadoc sagt:

  

@Configuration wird daher mit @Component meta-kommentiert   @Configuration-Klassen sind Kandidaten für das Scannen von Komponenten   (in der Regel mit Spring XML-Element) und   Daher können Sie auch @ Autowired / @ Inject am Feld nutzen   und Methodenebene (, aber nicht auf der Konstruktorebene ).

Sie können also die Konstruktorinjektion nicht für Configuration -Klassen verwenden. Offensichtlich wird es in Version 4.3 behoben, basierend auf dieser Antwort und dieser jira-Ticket .

    
Ali Dehghani 18.04.2016, 16:20
quelle

Tags und Links