2016-06-03 5 views
11

Ich verwende Spring 4.2.6.RELEASE. Während der Initialisierung meiner App erhalte ich eine solche Warnung:Warnung vor nicht statischen ConfigurationClassPostProcessor-Deklarationen auf @Configuration-Klassen

[Warnen] org.springframework.context.annotation.ConfigurationClassPostProcessor enhanceConfigurationClasses: Kann nicht @Configuration Bohne Definition ‚org.springframework.security.oauth2 verbessern. config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration $ TokenKeyEndpointRegistrar ' , da seine Singleton-Instanz zu früh erstellt wurde. Die typische Ursache ist eine nicht statische @Bean-Methode mit einem BeanDefinitionRegistryPostProcessor-Rückgabetyp: Erwägen Sie, Methoden wie 'statisch' zu deklarieren.

Ich habe jira für ein sehr ähnliches Problem gefunden:

https://jira.spring.io/browse/SPR-14234

aber es markiert ist als geschlossen und sollte in 4.2.6.RELEASE fixiert werden.

+1

Ich würde fragen, wie man diese Nachricht vermeiden kann, außer es in der Protokollierungskonfiguration auszuschalten. Im selben Projekt habe ich zwei @Configuration-Klassen mit jeweils einer '@Bean public static ' -Methode implementiert. Die eine führt zu dieser Nachricht, die andere nicht. – sjngm

+0

Warum ist es für Sie unpraktisch, nur dem Hinweis in der Warnmeldung zu folgen und Ihre Bean-Definitionsmethode als statisch zu definieren? Und damit ich Ihnen eine echte Antwort geben kann: Könnten Sie bitte Ihre annotierte Klasse "@Configuration" angeben? –

+0

Ich denke, das Problem ist mit AuthorizationServerEndpointsConfiguration, die eine Spring-Klasse ist nicht meine. Liege ich falsch? –

Antwort

-1

Vielleicht hilft das (oder nicht) ...

@RunWith(SpringRunner.class) 
@DataJpaTest 
public class TestMyImpl { 
... 

Ich verwende 4.3.4.RELEASE und haben die folgende Warnung für den Codeblock oben:

2016-12-30 07: 33: 04.296 WARN 2000 --- [main] oscaConfigurationClassPostProcessor: Die @Configuration-Bean-Definition 'embeddedDataSourceBeanFactoryPostProcessor' kann nicht erweitert werden, da ihre Singleton-Instanz zu früh erstellt wurde. Die typische Ursache ist eine nicht statische @Bean-Methode mit einem BeanDefinitionRegistryPostProcessor-Rückgabetyp: Sie können solche Methoden als "statisch" deklarieren.

Da ich @DataJpaTest verwenden, die die Testdatenbank (h2 in diesem Fall) automatisch konfiguriert durch die dataSource ersetzt es findet, wird das Verhalten erwartet und wollte. Die Warnung ist eine Bestätigung des übergeordneten Verhaltens von @DataJpaTest.

@RunWith(SpringRunner.class) 
@DataJpaTest 
@AutoConfigureTestDatabase(replace=Replace.NONE) 
public class TestMyImpl { 
... 

Durch Deaktivieren der Autokonfiguration (wie oben gezeigt) wird die Warnung ausgeblendet. Die datasource kann jetzt wie üblich konfiguriert werden.

Verwandte Themen