Umgebungsvariablen in Java verwenden
Lesezeit: 4 Minuten
Umgebungsvariablen sind eine hervorragende Möglichkeit, Java-Anwendungen zu konfigurieren, ohne Einstellungen explizit in Code speichern zu müssen, z. B. für Datenbank- und Caching-Server oder für APIs von Drittanbietern.
Solche Einstellungen außerhalb des Codes vorzunehmen hat mehrere eindeutige Vorteile:
- Bei Änderungen der Einstellungen muss der Code nicht aktualisiert und erneut kompiliert werden.
- Die Offenlegung sensibler Anmeldeinformationen wie Benutzernamen und Passwörter sowie von Tokens wird verhindert.
- Derselbe Code kann in mehreren Umgebungen bereitgestellt werden.
In diesem kurzen Artikel werde ich Ihnen einige der Möglichkeiten zeigen, wie Sie mit Umgebungsvariablen in Java arbeiten können.
Zugriff auf Umgebungsvariablen in Java
Eine der häufigsten Methoden ist die Verwendung von System.getenv(), die ein optionales Argument des Typs String
akzeptiert. Je nachdem, ob ein Argument des Typs String
übergeben wird, werden unterschiedliche Werte von der Methode zurückgegeben. Genauer:
Wenn ein String
übergeben wird und er mit einem Schlüssel in der Map
der internen Umgebung übereinstimmt, wird dessen Wert zurückgegeben. Wenn kein übereinstimmender Schlüssel gefunden wird, wird null
zurückgegeben. Wenn kein Argument des Typs String
übergeben wird, wird eine schreibgeschützte java.util.Map
zurückgegeben, die alle Umgebungsvariablen und deren Werte enthält. Die Schlüssel der Map sind die Namen der Umgebungsvariablen, und ihre Werte sind deren Werte.
Unten sehen Sie ein Beispiel, wie Sie die Methode zum Abrufen der Umgebungsvariable SHELL
(die die Shell des Benutzers enthält) unter Linux verwenden können.
Setzen von Umgebungsvariablen
Neben dem Lesen von Umgebungsvariablen kann es auch hilfreich sein zu wissen, wie sie gesetzt werden können. Ich werde nicht zu sehr ins Detail gehen, sondern mich auf das Wesentliche konzentrieren. Wenn Sie mehr darüber erfahren möchten, können Sie den ausführlichen Blogbeitrag von Dominik Kundel zu diesem Thema lesen.
UNIX, Linux und macOS
Unter UNIX, Linux und macOS können Umgebungsvariablen im Wesentlichen auf drei Arten festgelegt werden.
Verfügbar für die aktuelle Sitzung und alle untergeordneten Prozesse
Sie können Umgebungsvariablen so initialisieren, dass sie für die aktuelle Sitzung verfügbar sind, sowohl für die aktuelle Sitzung als auch für alle in der aktuellen Sitzung gestarteten Sitzungen und Prozesse, indem Sie den integrierten Export-Befehl wie im folgenden Beispiel verwenden.
Verfügbar für die aktuelle Sitzung
Sie können eine Umgebungsvariable so initialisieren, dass sie wie im folgenden Beispiel für die aktuelle Sitzung, aber nicht für untergeordnete Prozesse verfügbar ist, indem Sie nicht den Befehl export
verwenden.
Verfügbar für einen bestimmten Prozess
Außerdem können Sie eine Umgebungsvariable so initialisieren, dass sie nur für einen bestimmten Prozess verfügbar ist. Dies ist hilfreich, wenn nur dieser Prozess die Variable benötigt. Sie können sie wie im folgenden Beispiel initialisieren, wenn Sie den gewünschten Prozess starten.
Microsoft Windows
Das Festlegen von Umgebungsvariablen funktioniert in Microsoft Windows ein wenig anders. Sie können sie über die Systemsteuerung, die Eingabeaufforderung oder die PowerShell-Konsole festlegen. Nachfolgend finden Sie Beispiele für die beiden letztgenannten Verfahren.
Verwenden von env-Dateien
Es kann zwar sehr effektiv sein, Umgebungsvariablen auf diese Weise festzulegen, es kann aber auch recht schnell umständlich werden. Wenn die Variablen beispielsweise in der Shell des Betriebssystems festgelegt werden, gibt es keine Liste der Variablen, die die Anwendung benötigt, und es sind auch keine Informationen darüber verfügbar, wofür eine Variable verwendet wird oder welchen Datentyp sie haben muss.
Unter anderem aus diesem Grund empfiehlt das 12-Factor-App-Manifest eine strikte Trennung von Konfigurierung und Code. Diese Praxis hat sich in der gesamten Entwicklergemeinschaft rasch durchgesetzt, und gewöhnlich werden env-Dateien verwendet. Hierbei handelt es sich um reine Textdateien, die eine Liste von Schlüssel-Wert-Paaren speichern und damit die Umgebungsvariablen definieren, die erforderlich sind, damit eine Anwendung funktioniert, so wie im folgenden Beispiel.
Um den Einstieg in ein Projekt zu vereinfachen, wurde eine weitere gängige Praxis entwickelt, nämlich die Aufnahme einer env.example-Datei in ein Projekt, die alle Schlüssel, aber nicht deren Werte enthält. Wenn ein neuer Entwickler mit der Arbeit an der Anwendung begann, kopierte er die Datei, benannte sie in env um und legte Werte für jeden Schlüssel fest, der für seine lokale Entwicklungsumgebung relevant ist.
Lesen von env-Dateien
Wenn wir davon ausgehen, dass das obige Beispiel die env-Datei für unser Projekt war, könnten wir ein Paket wie dotenv-java verwenden, um die Variablen unserer Anwendung zur Verfügung zu stellen.
Im Codebeispiel unten sehen Sie ein Beispiel für die Verwendung des Pakets.
Der Code initialisiert ein neues Dotenv
-Objekt, „dotenv“, und ruft Dotenv.configure().load()
auf, um die Umgebungsvariablen in der env-Datei im Stammverzeichnis des Projekts zu lesen. Anschließend wird dotenv.get()
verwendet, um den Wert des String
-Objekts abzurufen, das übergeben wurde. Wenn kein übereinstimmender Schlüssel gefunden wird, gibt die Methode null
zurück.
Ein Hinweis zur Sicherheit der env-Datei
Wenn sensible Daten in der env-Datei gespeichert werden, ist zu beachten, dass die Datei nicht mit Versionsverwaltungssoftware, wie beispielsweise Git
, gespeichert werden darf. Wenn das passiert, gehen alle Sicherheitsvorteile der Verwendung von dotenv-Dateien verloren. Aus diesem Grund ist es üblich, sie von der Versionierung auszuschließen, z. B. indem Sie .env (und Variationen des Dateinamens) zur gitignore-Datei eines Projekts hinzufügen, wenn Sie Git verwenden.
So arbeiten Sie mit Umgebungsvariablen in Java.
Ich hoffe, dieser Artikel hat Ihnen geholfen zu verstehen, wie Sie Umgebungsvariablen in Ihren Java-Projekten verwenden können.
Nutzen Sie noch andere Möglichkeiten, mit Umgebungsvariablen zu arbeiten? Ich würde es gerne wissen!
Matthew Setter ist PHP-Editor im Twilio Voice-Team und ein Entwickler in verschiedenen Sprachen. Er ist auch der Autor von Mezzio Essentials und Docker Essentials. Wenn er nicht gerade PHP-Code schreibt, schreibt er großartige PHP-Artikel hier bei Twilio. Sie erreichen ihn unter msetter@twilio.com und finden ihn unter settermjd auf Twitter und GitHub.
Verwandte Posts
Ähnliche Ressourcen
Twilio Docs
Von APIs über SDKs bis hin zu Beispiel-Apps
API-Referenzdokumentation, SDKs, Hilfsbibliotheken, Schnellstarts und Tutorials für Ihre Sprache und Plattform.
Ressourcen-Center
Die neuesten E-Books, Branchenberichte und Webinare
Lernen Sie von Customer-Engagement-Experten, um Ihre eigene Kommunikation zu verbessern.
Ahoy
Twilios Entwickler-Community-Hub
Best Practices, Codebeispiele und Inspiration zum Aufbau von Kommunikations- und digitalen Interaktionserlebnissen.