2014-04-10 7 views
8

Ich habe eine Spring Boot-Anwendung, die mit Zhipster generiert wurde, und es funktioniert gut. Ich muss jedoch auch eine zweite Anwendung für einige Backoffice-Batch-Jobs erstellen, und diese Anwendung verwendet die meisten der Spring-Services der ersten Anwendung. Ich habe eine zweite Hauptklasse erstellt, die eine Spring-Boot-Anwendung startet. Das Problem ist, dass auch der eingebettete Webserver und alle Dienste, die nur für die Web-App nützlich sind, gestartet werden. Ich brauche nur die Dienste, die Persistenz und andere Klassen, die nicht spezifisch mit der GUI verbunden sind.Wie starte ich eine Spring Boot-Anwendung ohne den eingebetteten Tomcat?

Hier sind meine zwei Hauptklassen (vereinfacht)

Die normale Feder-Boot-App:

@ComponentScan 
@AutoConfigure 
class Application { 
    public static void main(String[] args) { 
     SpringApplication app = new SpringApplication(Application.class) 
     app.run(args) 
    } 
} 

Die Back-Office-App:

@ComponentScan 
@AutoConfigure 
class BackOfficeApplication { 
    public static void main(String[] args) { 
     SpringApplication app = new SpringApplication(BackOfficeApplication.class) 
     app.run(args) 
    } 
} 

Was funktioniert: My Back-Office Anwendung hat Zugriff auf alles, was ich brauche. Spring Services, Beans usw. Das Problem: Die Backoffice-App startet die GUI und verhindert, dass ich sie gleichzeitig zweimal starte.

Gibt es eine Möglichkeit, den Start des eingebetteten Tomcat-Servers zu deaktivieren? Gibt es sonst eine Möglichkeit, den Kontext der Federanwendung auf eine andere Weise zu laden, die den eingebetteten Server nicht startet?

Einige Details: * Ich starte die App nicht mit mvn Spring-Boot: run. Ich starte die Klasse direkt mit Java (oder mit Eclipse

Antwort

11

SpringApplication hat eine Eigenschaft webEnvironment. Der Standardwert ist true, wenn Tomcat auf dem Classpath ist, aber Sie können es auf false gesetzt (programmatisch oder mit spring.main.webEnvironment).

+1

Scheint genau das, was ich brauche, ich werde es morgen testen und die Antwort akzeptieren, wenn es funktioniert. – Kaidjin

Verwandte Themen