W mojej aplikacji Spring Boot chcę utworzyć plik właściwości specyficznych dla środowiska. Rodzaj opakowania mojej aplikacji na wojnie i wykonuję ją we wbudowanym tomcat. Używam oczek i wykonuję główny z samego o.
- Czy mogę mieć plik właściwości specyficznych dla środowiska, taki jak aplikacja - $ {wartość-env} .properties?
W powyższym przypadku wartość-env będzie miała wartości lokalne / devl / test / prod
Gdzie ustawić plik wartości env? W przypadku lokalnego mogę ustawić go jako argument jvm za pośrednictwem sts
Kto czyta application.properties w aplikacji Spring Boot.
Jak załadować plik właściwości specyficznych dla środowiska? Na przykład, jeśli ustawię identyfikator UID bazy danych, pwd, schemat itp. W pliku właściwości specyficznym dla środowiska, w takim przypadku czy źródło danych będzie w stanie zrozumieć zawarte w nim właściwości?
Czy mogę używać pliku application.properties i application-local.properties w tym samym czasie?
źródło
spring.active.profiles
więc użyj-Dspring.active.profiles=local
. zamiast.Odpowiedzi:
Spring Boot obsługuje już właściwości oparte na profilach .
Po prostu dodaj
application-[profile].properties
plik i określ profile do użycia za pomocąspring.profiles.active
właściwości.-Dspring.profiles.active=local
Spowoduje to załadowanie
application.properties
iapplication-local.properties
z tymi ostatnimi nadpisującymi właściwości z pierwszego.źródło
Tak, możesz. Ponieważ używasz wiosny, sprawdź
@PropertySource
anotację.Anotuj konfigurację za pomocą
@PropertySource("application-${spring.profiles.active}.properties")
Możesz to nazwać, jak chcesz, i dodać wiele plików nieruchomości, jeśli chcesz. Może być fajne, jeśli masz więcej zestawów i / lub wartości domyślnych, które należą do wszystkich środowisk (można je również zapisać za pomocą @PropertySource {..., ..., ...}).
@PropertySources({ @PropertySource("application-${spring.profiles.active}.properties"), @PropertySource("my-special-${spring.profiles.active}.properties"), @PropertySource("overridden.properties")})
Następnie możesz uruchomić aplikację ze środowiskiem
-Dspring.active.profiles=test
W tym przykładzie nazwa zostanie zastąpiona właściwościami testu aplikacji i tak dalej.
źródło
$spring.profiles.active}
jest to ciąg oddzielony tablicą / przecinkiem. Może więc nie robić tego, czego oczekujesz / chcesz, gdy jest aktywnych wiele profili.możemy to zrobić:
w application.yml :
spring: profiles: active: test //modify here to switch between environments include: application-${spring.profiles.active}.yml
w aplikacji test.yml :
server: port: 5000
oraz w application-local.yml :
server: address: 0.0.0.0 port: 8080
następnie rozruch wiosną uruchomi naszą aplikację tak, jak chcemy.
źródło
My Point, IN to nie jest sposób proszący programistę o stworzenie całego środowiska związanego z jednym przejściem, co powoduje ryzyko ujawnienia konfiguracji produkcyjnej programistom końcowym
zgodnie z 12-Factor, nie powinno być specyficzne dla środowiska przebywać tylko w Enviornment.
Jak to robimy dla CI CD
źródło