2015-06-27 11 views
8

Ich möchte eine Spring-Boot-Anwendung ausführen, aber es auf mehrere Ports hören.Spring Boot sperate @Configurations für mehrere Anwendungskontexte

Ziel ist es, einen Apache mehrere (Sub-) Domänen an die Spring-Boot-Anwendung (Tomcat) an verschiedenen Ports weiterleiten zu lassen. Beispiel:

  example.com/** -> PORT 8080 
    client.example.com/** -> PORT 8090 
employee.example.com/** -> PORT 8100 

Soweit ich aus mehreren Threads auf SO verstanden, ich bin am besten aus mehreren @SpringBootApplication Kommentierte Klassen von einer Hauptklasse starten, nicht wahr? (https://stackoverflow.com/a/25870132/1510659)

Was ich noch nicht verstanden habe, ist, wie man jede dieser Anwendungen separat konfigurieren kann.

Lasst uns sagen, dass ich diese drei Anwendungen ins Leben gerufen haben, wie oben in den verlinkten Beitrag gezeigt:

MainExampleApplication 
ClientExampleApplication 
EmployeeExampleApplication 

Nun habe ich zum Beispiel getrennte Spring Security @Configuration Klassen für jede dieser Anwendungen, als auch haben wollen als @RequestMappings, die den gleichen Wert haben können (zB "/").

Wie kann ich den Klassen @Configuration oder @Controller mitteilen, welcher Anwendung sie zugeordnet sind?

Oder gibt es Eigenschaften, die beim Start an die Anwendungen übergeben werden können, um anzugeben, welche Ressourcen für den Kontext verantwortlich sind?

Ich hoffe, ich gehe hier nicht in eine völlig falsche Richtung. Ich habe Erfahrung mit Spring MVC und habe einige ziemlich einfache Spring-Anwendungen konfiguriert - aber nicht mit mehreren Kontexten. Ich wäre wirklich froh, wenn mich jemand in die richtige Richtung führen könnte. Vielen Dank im Voraus.

UPDATE

Wie in iamiddy Antwort und xeon Kommentar erwähnt, habe ich Federprofile dafür. Ich habe den SpringApplicationBuilder beim Start mit einem Profil für jeden meiner Anwendungskontexte versehen und den @Profile("some_profile") auf dem @Components verwendet, der nur für einige der Kontexte verfügbar sein sollte.

+2

Könnten Sie in Betracht ziehen, [Spring Profiles] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html) dafür zu verwenden? – Xeon

Antwort

6

Verwenden Sie Profiles es ist eine große Feder-Funktion, lädt nur Bohnen mit dem Profil zugeordnet. Sobald das erledigt Ihre Anwendungen N mal mit verschiedenen port und profile Argumente

Ex starten: Hier ist, wie Sie die erste starten würde, tun es für den Rest Ihres N

java -jar -Dspring.profiles.active=production1 -Dserver.port=9000 app.jar

+0

Das sieht vielversprechend aus. Ich werde es später am Tag ausprobieren und melden :) – sldk

+0

Sorry, habe vergessen zu berichten ... Diese Verwendung von Profilen war in der Tat die Lösung für mich! – sldk