W mojej aplikacji mam ziarenka z adnotacją @Profile("prod")
i @Profile("demo")
. Pierwsza, jak możesz się domyślić :), jest używana na ziarnach, które łączą się z produkcyjną bazą danych, a druga dodaje adnotacje do fasoli, które używają fałszywej bazy danych ( HashMap
lub cokolwiek innego) - aby przyspieszyć rozwój.
Chciałbym mieć domyślny profil ( "prod"
), który będzie używany zawsze, jeśli nie zostanie zastąpiony przez „ coś innego ”.
Idealnie byłoby mieć w moim web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
a następnie zastąp to, -Dspring.profiles.active="demo"
aby móc zrobić:
mvn jetty:run -Dspring.profiles.active="demo".
Ale niestety to nie działa. Masz jakiś pomysł, jak mogłem to osiągnąć? Ustawienie -Dspring.profiles.active="prod"
we wszystkich moich środowiskach nie wchodzi w grę.
Zdefiniuj środowisko produkcyjne jako profil domyślny w pliku web.xml
a jeśli chcesz użyć innego profilu, przekaż go jako właściwość systemową
źródło
spring.profiles.default=prod
wapplication.properties
, wtedyapplication-prod.properties
nie zostanie załadowany. Jest to sprzeczne z intuicją.application.properties
pliku. Aby wiedzieć, żeapplication-prod.properties
powinien być używany, musisz znać profil. To właśnie robi to podejście. Definiuje profile poza kontekstem sprężyny alboweb.xml
(domyślnie), albo poprzez zmienną środowiskową (nadpisz wartość domyślną).application-default.properties
jestem załadowany, spodziewam się również, żeapplication-newdefault.properties
zostanie załadowany. To nie jest problem z twoim rozwiązaniem, to problem z Spring ...Mam ten sam problem, ale używam WebApplicationInitializer do programowego konfigurowania ServletContext (Servlet 3.0+). Więc robię co następuje:
źródło
Możesz również rozważyć usunięcie profilu PROD i użyć @Profile („! Demo”)
źródło
O ustawieniu domyślnego profilu produkcyjnego zamieściłem już @andih
Najłatwiejszym sposobem ustawienia domyślnego profilu dla wtyczki maven jetty jest dołączenie poniższego elementu do konfiguracji wtyczki:
źródło
Sprężyna zapewnia dwie oddzielne właściwości podczas określania, które profile są aktywne:
spring.profiles.active
i
spring.profiles.default
Jeśli
spring.profiles.active
jest ustawiona, to jej wartość określa, które profile są aktywne. Ale jeślispring.profiles.active
nie jest ustawione, wygląda na to Wiosnaspring.profiles.default.
Jeśli żadna z nich
spring.profiles.active
niespring.profiles.default
jest ustawiona, nie ma aktywnych profili i tworzone są tylko te komponenty bean, które nie są zdefiniowane jako znajdujące się w profilu. Każdy komponent bean, który nie określa profilu, należy dodefault
profilu.źródło
Możesz skonfigurować swój web.xml jako filtrowany zasób i mieć tę wartość wypełnioną przez maven z ustawień profilu maven - to właśnie robimy.
w pom filtruj wszystkie zasoby (możesz to zrobić, jeśli nie masz w nich oznaczenia $ {})
w web.xml umieścić
w pom stworzyć profile maven
Teraz możesz użyć
lub po prostu za
-P DEMO
pomocą dowolnego polecenia mavenaźródło