2015-06-27 12 views
8

Chciałbym uruchomić jedną aplikację rozruchową wiosna, ale mam go słuchać na wielu portach.Spring Boot sperate @Configurations dla wielu kontekstów aplikacji

Celem jest umożliwienie serwerowi Apache przekazania wielu (pod) domen do aplikacji rozruchu sprężynowego (Tomcat) na różnych portach. Przykład:

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

O ile zrozumiałem z kilku wątków na SO, jestem najlepiej wyłączyć uruchomienie wielokrotnego @SpringBootApplication Opatrzone komentarzem klas z jednej głównej klasy, prawda? (https://stackoverflow.com/a/25870132/1510659)

Czego jeszcze nie zrozumiałem, to jak skonfigurować każdą z tych aplikacji oddzielnie.

Powiedzmy, że uruchomiliśmy tych trzech aplikacji, jak pokazano w połączonej postu powyżej:

MainExampleApplication 
ClientExampleApplication 
EmployeeExampleApplication 

Teraz, na przykład, chcę mieć oddzielne Wiosna zabezpieczeń @Configuration zajęcia dla każdego z tych zastosowań, a także @RequestMappings, które mogą mieć tę samą wartość (np. "/").

Jak określić klasy, dla których aplikacji są przypisane?

Czy istnieją właściwości, które można przekazać do aplikacji podczas uruchamiania, aby określić, które zasoby są odpowiedzialne za kontekst?

Mam nadzieję, że nie pójdę tutaj w całkowicie złym kierunku. Mam doświadczenie w Spring MVC i skonfigurowałem kilka raczej uproszczonych aplikacji Spring - ale nie w wielu kontekstach. Byłbym bardzo zadowolony, gdyby ktoś mógł poprowadzić mnie we właściwym kierunku. Z góry dziękuję.

UPDATE

Jak wspomniano w odpowiedzi iamiddy i komentarzu Xeon za użyłem wiosna profili za to. Dostarczyłem SpringApplicationBuilder z profilem dla każdego kontekstu aplikacji podczas uruchamiania i użyłem @Profile("some_profile") na @Components, który powinien być dostępny tylko dla niektórych kontekstów.

+2

Czy możesz rozważyć użycie [Spring Profiles] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html)? – Xeon

Odpowiedz

6

Użyj Profiles to świetna funkcja sprężynowa, ładuje tylko fasolę przypisaną do profilu. Po dokonaniu uruchomić aplikacje N razy z różnymi port i profile argumentów

Ex: Oto jak można zacząć pierwszy, zrób to dla reszty do N

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

+0

To wygląda obiecująco. Wypróbuję to później w ciągu dnia i zgłoszę :) – sldk

+0

Niestety, zapomniałem zgłosić ... To wykorzystanie profili było w rzeczywistości rozwiązaniem dla mnie! – sldk