2015-03-23 11 views
11

Ich habe eine Spring Boot Integration-Anwendung mit Camel-HTTP. Da Camel-HTTP eine Abhängigkeit von geronimo-servlet hat, versucht Spring Boot, den Webanwendungskontext zu laden.Wie kann ich vermeiden, dass Spring Boot EmbeddedWebApplicationContext lädt?

Wie kann ich Feder erzwingen, um die EmbeddedWebApplicationContext nicht zu laden?

Ich habe versucht, alle AutoConfiguration Klassen in org.springframework.boot.autoconfigure.web mit der @EnableAutoConfiguration(exclude = ...) Annotation auszuschließen.

Antwort

14

Sie können die SpringApplicationBuilder Klasse verwenden explizit deaktivieren Sie eine Web-Umgebung und Kontext Laden dh in der Hauptklasse:

+1

Das hat funktioniert! Ich habe dasselbe mit 'SpringApplication' anstelle von' SprintApplicationBuilder' gemacht, aber es hat das Servlet erkannt und den Webkontext erstellt. Mit dem Erbauer funktioniert es gut. Danke –

+0

Dies funktioniert nicht, wenn javax.servlet.Servlet oder org.springframework.web.context.ConfigurableWebApplicationContext im Klassenpfad sind. Rufen Sie contextClass-Methode besser auf, um den AnnotationConfigApplicationContext anzugeben. –

+0

@ConstantinoCronemberger Der 'web (false)' Aufruf ist nach der 'initialize (sources)' Methode, die als Teil des SAB/SA Konstruktors aufgerufen wird, also sollte dies nicht der Fall sein? –

0

Sie können versuchen, die @ContextConfiguration Anmerkung mit:

@ContextConfiguration(loader = SpringApplicationCtxtLoader.class, classes = annotatedClass.class) 

Die annotatedClass.class sind die Klasse, die annotated sind, zum Beispiel mit: @Component, @Service, @Repository.

In this Antwort dies ist der vorgeschlagene Ansatz für Prüfzwecke, aber ich denke, es könnte Sie

helfen
+0

Das kann Arbeit für Tests sein, aber nicht für die Spring Boot-Anwendung selbst –

Verwandte Themen