2015-06-27 15 views
8

Mi piacerebbe eseguire un'applicazione di avvio a molla ma farla ascoltare su più porte.Spring Boot sperate @Configurazioni per più contesti applicativi

L'obiettivo è di consentire a un Apache di inoltrare più domini (sottodistretti) all'applicazione di avvio a molla (Tomcat) su porte diverse. Esempio:

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

Per quanto ho capito da diversi thread su SO, sono meglio fuori il lancio multiplo @SpringBootApplication classi annotate da una classe principale, giusto? (https://stackoverflow.com/a/25870132/1510659)

Ciò che non ho ancora capito, è come configurare ciascuna di queste applicazioni separatamente.

Diciamo che ho lanciato queste tre applicazioni, come indicato nel post linkato sopra:

MainExampleApplication 
ClientExampleApplication 
EmployeeExampleApplication 

Ora, per esempio, voglio avere separati Primavera sicurezza @Configuration classi per ciascuna di queste applicazioni, così come @RequestMappings che potrebbe avere lo stesso valore (ad esempio "/").

Come indicare alle classi @Configuration o @Controller a quale applicazione sono assegnate?

Oppure ci sono proprietà che possono essere passate alle applicazioni all'avvio per specificare quali risorse sono responsabili del contesto?

Spero di non andare in una direzione totalmente sbagliata qui. Ho esperienza con Spring MVC e ho configurato alcune applicazioni Spring piuttosto semplicistiche - ma non con più contesti. Sarei davvero felice se qualcuno potesse guidarmi nella giusta direzione. Grazie in anticipo.

UPDATE

Come accennato nella risposta di iamiddy e commentare di Xeon, ho usato Primavera Profili per questo. Ho fornito a SpringApplicationBuilder un profilo per ciascuno dei contesti delle mie applicazioni all'avvio e ho utilizzato @Profile("some_profile") su @Components che dovrebbe essere disponibile solo per alcuni dei contesti.

+2

Potresti prendere in considerazione l'utilizzo di [Profili Spring] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html) per quello? – Xeon

risposta

6

Utilizzare Profiles è una funzionalità eccezionale, carica solo i bean associati al profilo. Una volta fatto iniziare le vostre applicazioni N volte con diversi port e profile argomenti

Es: Ecco come si dovrebbe iniziare il primo, farlo per il resto alla vostra N

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

+0

Sembra promettente. Lo proverò più tardi e riferirò :) – sldk

+0

Spiacente, ho dimenticato di segnalare ... Questo uso di profili era in realtà la soluzione per me! – sldk