Heim Java javaLernprogramm Wie verwende ich die Properties-Klasse in Java?

Wie verwende ich die Properties-Klasse in Java?

Oct 31, 2024 am 08:35 AM

¿Cómo usar la clase Properties en Java?

Einführung

Wenn wir an einer Java-Anwendung arbeiten, ist es üblich, dass wir mit einigen Konfigurationen arbeiten müssen, zum Beispiel unter anderem mit der URL einer Datenbank, dem Port eines Servers. Anstatt diese Einstellungen direkt im Code fest zu codieren, möchten wir sie von einer Stelle außerhalb des Codes abrufen, beispielsweise aus einer Eigenschaftendatei. Oder Sie können Konfigurationen sogar zur Laufzeit speichern, um sie später zu lesen.

In jedem dieser Fälle können wir für bestimmte Szenarien eigene Lösungen entwickeln, zum Beispiel eine Textdatei erstellen und in der ersten Zeile die URL der Datenbank speichern, in der zweiten Zeile den Server-Port usw. . Dies kann jedoch mühsam und fehleranfällig sein, sodass eine robustere und skalierbarere Lösung erforderlich ist. Für diese Art von Fällen stellt uns Java eine sehr einfache und effiziente Lösung zur Verfügung, die Properties-Klasse.

Was ist die Properties-Klasse?

Properties ist eine Klasse im Paket java.util, die es uns ermöglicht, Konfigurationen sowohl vorübergehend im Speicher als auch dauerhaft in einer Eigenschaftendatei zu speichern, damit wir sie später lesen und in unserer Anwendung verwenden können. Durch das Erstellen einer Instanz der Properties-Klasse erhalten Sie ein Objekt, das sich wie ein Wörterbuch verhält, in dem jede Konfiguration als Schlüssel-Wert-Paar gespeichert wird.

Verwenden der Properties-Klasse

Zu Beginn muss eine Instanz der Properties-Klasse erstellt werden.

Properties props = new Properties();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Durch die Erbung von der HashTable-Klasse (die wiederum von Dictionary erbt) können wir innerhalb der Properties-Klasse erkennen, dass sie über Methoden vom Typ Object verfügt, obwohl in Wirklichkeit erwartet wird, dass die Werte Zeichenfolgen oder Strings sind. und not ist es nicht notwendig, jedes Mal, wenn Sie mit einem Wert arbeiten, einen String umzuwandeln. Obwohl es in der Instanz gängige Kartenmethoden gibt, ist es auf diese Weise in den meisten Fällen nicht erforderlich, diese zu verwenden. Anstelle von get(Object key) können Sie beispielsweise getProperty(String key) verwenden.

Eigenschaften definieren

Um eine Eigenschaft zu definieren, wird die Methode setProperty(String key, String value) verwendet. Wie der Name schon sagt, empfängt diese Methode zwei Parameter, den Schlüssel (wie Sie die Eigenschaft nennen möchten) und den Wert (den Eigenschaftswert). ), wenn man bedenkt, dass erwartet wird, dass beide Parameter immer vom Typ String sind.

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Holen Sie sich eine Immobilie

Um eine Eigenschaft zu erhalten, können Sie die Methode getProperty(String key) verwenden, die als Parameter den Schlüssel der Eigenschaft empfängt, die Sie erhalten möchten. Wenn die Eigenschaft nicht vorhanden ist, wird null zurückgegeben.

Properties props = new Properties();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um den Erhalt von Null zu vermeiden, falls eine Eigenschaft nicht vorhanden ist, können Sie die Methode getProperty(String key, String defaultValue) verwenden, die einen Standardwert als zweiten Parameter erhält.

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Über Eigenschaften iterieren

Da es sich um ein Objekt vom Typ „Map“ handelt (obwohl die Verwendung von HashTable-Methoden nicht empfohlen wird), verfügt es über die Methode „entrySet()“, aber wie Sie sehen können, ist es vom Typ „Object“, eine Alternative zum Durchlaufen aller Eigenschaften um die Methode stringPropertyNames() zu verwenden, die eine Reihe von Zeichenfolgen mit allen Eigenschaftsschlüsseln zurückgibt (die zurückgegebenen Werte sind in keiner bestimmten Reihenfolge).

var API_URL = props.getProperty("API_URL");
System.out.println(API_URL);

// Output
null
Nach dem Login kopieren
Nach dem Login kopieren

Eine schnellere Möglichkeit, alle Eigenschaften anzuzeigen, ist die Verwendung der list(PrintStream out)-Methode, die alle Eigenschaften in den als Parameter übergebenen Ausgabestream druckt, zum Beispiel System.out.

var API_URL = props.getProperty("API_URL", "http://api.example.com");
System.out.println(API_URL);

// Output
http://api.example.com
Nach dem Login kopieren
Nach dem Login kopieren

Speichern Sie Eigenschaften in einer Datei

Properties stellt die Methoden „store()“ und „storeToXML()“ bereit, sodass Eigenschaften in einem properties-Format (Schlüssel=Wert) und in einem XML-Format (dies kann sein) gespeichert werden können nützlich, wenn die Eigenschaften in verschiedenen Umgebungen verwendet werden). Verwenden Sie nicht die Methode save(), da sie veraltet ist und ihre Verwendung nicht empfohlen wird, da sie im Fehlerfall keine Ausnahmen auslöst.

Bevor wir die Eigenschaften in einer Datei speichern, können wir Folgendes tun, um über die Konsole zu überprüfen, was tatsächlich gespeichert wird, indem wir die Methode „store()“ und „System.out“ verwenden. Es ist wichtig, die ausgelöste Ausnahme irgendwie zu kontrollieren.

for (String prop : props.stringPropertyNames()) {
    System.out.println(prop + " = " + props.getProperty(prop));
}

// Output
DB_PORT = 3306
DB_PASS = p4ssw0rd
DB_USER = root
DB_HOST = localhost
Nach dem Login kopieren

Wenn Sie das Ergebnis analysieren, können Sie sehen, dass in der ersten Zeile der Kommentar, der als zweites Argument übergeben wird, gespeichert wird (es spielt keine Rolle, ob es sich um eine leere Zeichenfolge handelt, wenn sie null ist, wird sie nicht gedruckt). In der zweiten Zeile werden Datum und Uhrzeit der Speicherung der Eigenschaften gespeichert, und ab der dritten Zeile werden die Eigenschaften im Format Schlüssel=Wert.

gespeichert

Wenn die Methode storeToXML() verwendet wird, wird eine Datei mit folgendem Inhalt erhalten:

props.list(System.out);

// Output
-- listing properties --
DB_PORT=3306
DB_PASS=p4ssw0rd
DB_USER=root
DB_HOST=localhost
Nach dem Login kopieren

Um die Eigenschaften in einer Datei namens db.properties zu speichern, können Sie Folgendes tun:

props.store(System.out, "Database Configuration");

// Output
#Database Configuration
#Thu Oct 10 11:06:04 CST 2024
DB_HOST=localhost
DB_PASS=p4ssw0rd
DB_PORT=3306
DB_USER=root
Nach dem Login kopieren

Nach der Ausführung und wenn keine Ausnahme ausgelöst wird, werden Sie sehen, dass in dem Verzeichnis, in dem das Programm ausgeführt wurde, eine Datei mit dem Namen db.properties mit folgendem Inhalt erstellt wurde:

props.storeToXML(System.out, "Database Configuration");

// Output
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Database Configuration</comment>
<entry key="DB_PORT">3306</entry>
<entry key="DB_PASS">p4ssw0rd</entry>
<entry key="DB_USER">root</entry>
<entry key="DB_HOST">localhost</entry>
</properties>
Nach dem Login kopieren

Um die Eigenschaften im XML-Format zu speichern, ändern Sie einfach die Methode „store()“ in „storeToXML()“.

Properties props = new Properties();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Eigenschaften aus einer Datei laden

Angenommen, eine Eigenschaft wurde in der Datei db.properties oder db.properties.xml geändert oder eine neue hinzugefügt, um die Eigenschaften aus einer der beiden Dateien zu laden, entweder in Eigenschaften oder XML können jeweils die Methoden „load()“ und „loadFromXML()“ verwendet werden. Es ist wichtig, die Ausnahme, die ausgelöst wird, wenn die Datei nicht existiert oder nicht gelesen werden kann, irgendwie zu kontrollieren.

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
var API_URL = props.getProperty("API_URL");
System.out.println(API_URL);

// Output
null
Nach dem Login kopieren
Nach dem Login kopieren

Sobald die Eigenschaften geladen sind, können sie in der Konsole angezeigt werden, um zu überprüfen, ob sie korrekt geladen wurden.

var API_URL = props.getProperty("API_URL", "http://api.example.com");
System.out.println(API_URL);

// Output
http://api.example.com
Nach dem Login kopieren
Nach dem Login kopieren

Abschluss

Wie wir gesehen haben, ermöglicht uns die Properties-Klasse, auf effiziente und einfache Weise mit Eigenschafts- oder Konfigurationsdateien zu arbeiten, sowohl um Eigenschaften zu speichern als auch zu lesen, was interessant zu wissen und in unseren Java-Anwendungen zu verwenden ist.

Das obige ist der detaillierte Inhalt vonWie verwende ich die Properties-Klasse in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1655
14
PHP-Tutorial
1252
29
C#-Tutorial
1226
24
Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Apr 19, 2025 pm 11:30 PM

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

E-Commerce-Plattform SKU und SPU-Datenbankdesign: Wie berücksichtigen Sie sowohl benutzerdefinierte Attribute als auch Attributloses Produkte? E-Commerce-Plattform SKU und SPU-Datenbankdesign: Wie berücksichtigen Sie sowohl benutzerdefinierte Attribute als auch Attributloses Produkte? Apr 19, 2025 pm 11:27 PM

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Apr 19, 2025 pm 11:36 PM

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

See all articles