
#java #spring #programowanie #git
Jak radzicie sobie z konfiguracją w Spring Boot?
Mam aplikację i w nim
- 20 parametrów, to konfiguracja domyślna (zawsze taka sama, czy to developersko czy produkcyjnie, ale jest w pliku, żeby w razie czego dało się to szybko zmienić), ma to być zapisane w repozytorum,
- 3 parametry, które nie mogą być domyślne (np. klucz API, ścieżka do folderu do zapisu plików itd), wartości nie mogą być zapisane w repozytorium (ze względów bezpieczeństwa jak np. API key lub nie są znane jak np. ścieżka), czyli ich wartości w repozytorm są puste, ale przed uruchomieniem aplikacji należy je uzupełnić.
I teraz zwykła praca z takim projektem wygląda tak:
- ściągasz projekt,
- ręcznie uzupełniasz 3 parametry,
- robisz zmiany w kodzie (i często w konfiguracji domyślniej, w którymś z tych 20 parametrów),
- chcesz zrobić commita ze zmianami,
- ale musisz pamiętać, żeby przed zrobieniem commita usunąć wartości tych 3 parametrów, które nie są domyślne,
- potem znowu musisz uzupełnić te 3 parametry, żeby móc kontynuować pracę.
Jest to bardzo podatne na błędy (raz zapomnisz i na repozytorium leci tajny klucz).
Jest to bardzo uciążliwe, bo co chwila trzeba uzupełniać i usuwać.
Nie możesz dodać pliku
Jak sobie z tym radzicie?
Jak radzicie sobie z konfiguracją w Spring Boot?
Mam aplikację i w nim
application.properties, przykładowo 23 parametry:- 20 parametrów, to konfiguracja domyślna (zawsze taka sama, czy to developersko czy produkcyjnie, ale jest w pliku, żeby w razie czego dało się to szybko zmienić), ma to być zapisane w repozytorum,
- 3 parametry, które nie mogą być domyślne (np. klucz API, ścieżka do folderu do zapisu plików itd), wartości nie mogą być zapisane w repozytorium (ze względów bezpieczeństwa jak np. API key lub nie są znane jak np. ścieżka), czyli ich wartości w repozytorm są puste, ale przed uruchomieniem aplikacji należy je uzupełnić.
I teraz zwykła praca z takim projektem wygląda tak:
- ściągasz projekt,
- ręcznie uzupełniasz 3 parametry,
- robisz zmiany w kodzie (i często w konfiguracji domyślniej, w którymś z tych 20 parametrów),
- chcesz zrobić commita ze zmianami,
- ale musisz pamiętać, żeby przed zrobieniem commita usunąć wartości tych 3 parametrów, które nie są domyślne,
- potem znowu musisz uzupełnić te 3 parametry, żeby móc kontynuować pracę.
Jest to bardzo podatne na błędy (raz zapomnisz i na repozytorium leci tajny klucz).
Jest to bardzo uciążliwe, bo co chwila trzeba uzupełniać i usuwać.
Nie możesz dodać pliku
application.properties do .gitignore, bo pozostałe zmiany w tym pliku chcesz zacommitować.Jak sobie z tym radzicie?
- Najlepsze
- Wszystkie komentarze







- hasła i klucze API można zaszyfrować Jasyptem i trzymać w repo.
- parametry można przekazywać w zmiennych środowiskowych i system properties podczas uruchamiania. To możesz dopisać do parametrów bootRuna czy innego czegoś, czym lokalnie odpalasz projekt (dockera, docker-compose'a czy innego dziada)
git update-index --assume-unchangedJeśli oczywiśćie korzystasz z GITa
W zamkniętych repozytoriach (nie koniecznie firmowych, bo może być firmowe, ale dostęp mogą mieć niepowołane osoby) może to się sprawdza. Wiem, że admini mają np. repozytoria z samymi hasłami. Ale nie jest to trzymane razem kodem, żeby każdy praktykant mógł to sobie oglądać.