ich mit dem folgenden Verfahren eine einfache SpringApplicationRunListener
Implementierung definiert:Warum ausführen Frühling Boot SpringApplicationRunListener zweimal, wenn Eureka mit
@Override
public void finished(ConfigurableApplicationContext configurableApplicationContext, Throwable throwable) {
logger.info("It's finished");
}
Wenn ich laufen ohne Federwolke Abhängigkeit ich folgendes Protokoll erhalten:
2016-04-27 10:37:37.702 INFO 5720 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-04-27 10:37:37.703 INFO 5720 --- [ main] b.a.test.LazyFilterRuntimeListener : It's finished
Allerdings, wenn ich hinzufügen, die folgende Abhängigkeit:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
Dann wird die „Es ist fertig“ Zeile zweimal protokolliert wird, einmal am Ende (wie ohne Federwolke/Eureka) und einmal am Anfang, noch vor dem Frühling Boot-Logo erscheint:
2016-04-27 10:37:35.500 INFO 5720 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]255b53dc: startup date [Wed Apr 27 10:37:35 CEST 2016]; root of context hierarchy
2016-04-27 10:37:35.638 INFO 5720 --- [ main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2016-04-27 10:37:35.785 INFO 5720 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'encrypt.CONFIGURATION_PROPERTIES' of type [class org.springframework.cloud.bootstrap.encrypt.KeyProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-04-27 10:37:35.786 INFO 5720 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'encryptionBootstrapConfiguration' of type [class org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration$$EnhancerBySpringCGLIB$$268d5fc8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-04-27 10:37:35.839 INFO 5720 --- [ main] b.c.test.LazyFilterRuntimeListener : It's finished
2016-04-27 10:37:35.842 INFO 5720 --- [ main] be.company.test.TestApplication : Started TestApplication in 0.499 seconds (JVM running for 0.86)
. ____ _ __ _ _
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ))))
' |____| .__|_| |_|_| |_\__, |////
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.2.7.RELEASE)
...
2016-04-27 10:37:37.702 INFO 5720 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-04-27 10:37:37.703 INFO 5720 --- [ main] b.c.test.LazyFilterRuntimeListener : It's finished
2016-04-27 10:37:37.703 INFO 5720 --- [ main] be.company.test.TestApplication : Started TestApplication in 2.423 seconds (JVM running for 2.721)
Er erwähnt auch die Linie "Anwendung in ... gestartet" zweimal.
Gibt es einen bestimmten Grund für dieses Verhalten? Ich versuche eine SpringApplicationRunListener
zu schreiben, die auf bestimmten Bohnen basiert, die erstellt worden sind. Wenn ich jedoch eine Federwolke hinzufüge, wird das erste Mal, wenn es die finished()
-Methode erreicht, der Kontext noch nicht erstellt, daher wird derzeit ein Fehler ausgegeben.
ich das gleiche Problem auftritt. Hast du das Problem gemeldet? Wenn ja, könnten Sie einen Link darauf veröffentlichen? – Ruben
Nein, habe es nicht gemeldet. Wir haben das Problem für unseren Fall bearbeitet. Da wir benötigt haben, dass Beans im Kontext waren, haben wir überprüft, ob die Bean zuerst existierte. https://github.com/camunda/camunda-bpm-spring-boot-starter/commit/19a6061533d56499896025a2886ca48514344a9a#diff-c41da622737469f43899d92d98d1edb0R40. Ich habe keine Ahnung, ob dieses Problem auch an 1.2.x oder 1.3.x gebunden ist. – g00glen00b