[JAVA] Beispielcode zum Zuweisen eines Werts in der Eigenschaftendatei zu einem Feld des erwarteten Typs

Überblick

Dies ist ein Beispielcode zum Zuweisen des Werts der Eigenschaftendatei mithilfe der Annotation "@ Value". Das gleiche Ergebnis kann mit der Konfigurationsklasse erzielt werden, indem die Annotation "@ ConfigurationProperties" verwendet wird, die in diesem Artikel nicht behandelt wird.

Umgebung

Referenz

Konvertieren Sie Array-Formatwerte in den Listentyp

Ersetzen Sie ein Array vom numerischen Typ

Es ist unklar, ob durch Kommas getrennte Werte in der Eigenschaftendatei als Arrays bezeichnet werden. Mit Spring Boot können Sie jedoch Feldern vom Auflistungstyp durch Kommas getrennte Werte zuweisen.

** Eigenschaftendatei **

properites


hoge.fuga = 100, 200, 300

Alternativ kann es als Array definiert werden, indem dem Eigenschaftsnamen ein Index hinzugefügt wird, z. B. "[0]".

properties


hoge.fuga[0]= 100
hoge.fuga[1]= 200
hoge.fuga[2]= 300

Definieren Sie für das yml-Format, indem Sie dem Wert "-`" voranstellen.

yml


hoge:
  fuga:
    - 100
    - 200
    - 300

Code

@Value("${hoge.fuga}")
private List<Integer> fuga;

Ersetzen Sie ein Array vom Typ String

** Eigenschaftendatei **

properites


hoge.fuga =Apfel,Mandarine,Keiner

yml


hoge:
  fuga:
    -Apfel
    -Mandarine
    -Keiner

Code

@Value("${hoge.fuga}")
private List<String> fuga;

Array-Formatwert auf Typ festlegen

Ersetzen Sie ein Array vom Typ String

** Eigenschaftendatei **

properties


hoge.fuga =Apfel,Mandarine,Keiner

Bei XML-Dateien können Sie einem Set-Feld kein Array zuweisen. Eine Ausnahme wird ausgelöst, wenn Sie versuchen, ein Array wie das folgende zuzuweisen.

yml


hoge:
  fuga:
    -Apfel
    -Mandarine
    -Keiner

Wie bei der Eigenschaftendatei ist es jedoch möglich, durch Kommas getrennt zu ersetzen.

yml


hoge:
  fuga:Apfel,Mandarine,Keiner

Code

Value("${hoge.fuga}")
private Set<String> fuga;

Schlüssel- / Wertformatwerte für den Kartentyp

Weisen Sie den Schlüssel einem Zeichenfolgentyp Map zu

** Eigenschaftendatei **

properites


hoge.fuga.key1 = val1
hoge.fuga.key2 = val2

yml


hoge:
  fuga:
    key1: val1
    key2: val2

Code

@Value("${hoge.fuga}")
private Map<String, String> fuga;

Weisen Sie eine Karte zu, deren Schlüssel ein numerischer Typ ist

** Eigenschaftendatei **

properties


hoge.fuga.101 = 123456789
hoge.fuga.201 = 456789012

yml


hoge:
  fuga:
    101: 123456789
    201: 456789012

Code

@Value("${hoge.fuga}")
private Map<Integer, Long> fuga;

Datumsformatwert für den LocalDateTime-Typ

Implementieren Sie beim Zuweisen zum Typ LocalDate / LocalDateTime den folgenden Formatierer in der Einstellungsklasse und registrieren Sie ihn in ConversionService.

@Bean
public ConversionService conversionService() {
  Set<FormatterRegistrar> registrars = new HashSet<>();
  registrars.add(dateTimeFormatterRegistrar());

  FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean();
  factory.setFormatterRegistrars(registrars);
  factory.afterPropertiesSet();
  return factory.getObject();
}

private FormatterRegistrar dateTimeFormatterRegistrar() {
  DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
  registrar.setDateTimeFormatter(dateTimeFormatterFactory());
  registrar.setUseIsoFormat(true);
  return registrar;
}

//Formatierungsimplementierung
private DateTimeFormatter dateTimeFormatterFactory() {
  DateTimeFormatterFactoryBean factory = new DateTimeFormatterFactoryBean();
  factory.setPattern("yyyy-MM-dd HH:mm:ss");
  factory.setTimeZone(TimeZone.getDefault());
  factory.afterPropertiesSet();
  return factory.getObject();
}

Dem Typ LocalDateTime zuweisen

** Eigenschaftendatei **

properites


hoge.fuga = 2017-08-01 23:59:59

yml


hoge:
  fuga: 2017-08-01 23:59:59

Code

@Value("${hoge.fuga}")
private LocalDateTime fuga;

Dem LocalDate-Typ zuweisen

** Eigenschaftendatei **

properites


hoge.fuga = 2017-08-01

yml


hoge:
  fuga: 2017-08-01

Code

@Value("${hoge.fuga}")
private LocalDate fuga;

Dateipfadformatwert zum Pfadtyp

Keine Notwendigkeit, einen Konverter oder dergleichen zu implementieren. Absolute Pfade und relative Pfade werden als Beispiele angegeben, es gibt jedoch keinen Unterschied in ihrer Handhabung.

Ersetzen Sie den Wert des relativen Pfads

** Eigenschaftendatei **

Bei Eigenschaftendateien wird eine Fehlermeldung angezeigt, wenn Sie das Pfadtrennzeichen nicht umgehen. (Im Fall einer Windows-Umgebung ist die Unix / Linux-Umgebung nicht bestätigt.)

properites


hoge.fuga = dir1\\fuga.txt

Für yml müssen Sie das Pfadtrennzeichen nicht umgehen.

yml


hoge:
  fuga: dir1\fuga.txt

Code

@Value("${hoge.fuga}")
private Path fuga;

Ersetzen Sie den absoluten Pfadwert

** Eigenschaftendatei **

properites


hoge.fuga = D:\\dir1\\dir2\\fuga.txt

yml


hoge:
  fuga: D:\dir1\dir2\fuga.txt

Code

@Value("${hoge.fuga}")
private Path path;

Konvertieren Sie den Zeichenfolgenwert in den Aufzählungstyp

Dies ist ein Beispiel, um den Wert der Eigenschaft dem Aufzählungstyp zuzuweisen.

Ersetzen Sie die aufgelöste Aufzählung durch die Zeichenfolge

Lösen Sie die entsprechende Aufzählung auf und ersetzen Sie sie durch die in der Eigenschaftendatei beschriebene Zeichenfolge. Keine Notwendigkeit, einen Konverter oder dergleichen zu implementieren.

** Eigenschaftendatei **

properites


hoge.fuga = Gold

yml


hoge:
  fuga: Gold

** Aufzählungsdefinition **

enum


public enum Material {
    Bronze,
    Sliver,
    Gold
    ;
}

Code

Value("${hoge.fuga}")
private Material fuga;

Ersetzen Sie die aufgelöste Aufzählung durch den Feldwert des Enumerators

Lösen Sie die entsprechende Aufzählung auf und ersetzen Sie sie durch den Feldwert des in der Eigenschaftendatei beschriebenen Enumerators (in diesem Beispiel das Feld label). Implementieren Sie in diesem Fall den folgenden Konverter in der Einstellungsklasse und registrieren Sie ihn im Konvertierungsdienst.

@Bean
public ConversionService conversionService() {
  Set<Converter<?, ?>> converters = new HashSet<>();
  converters.add(new StringToMaterialConverter());

  FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean();
  factory.setConverters(converters);

  factory.afterPropertiesSet();
  return factory.getObject();
}
import com.example.lib.constants.Material;
import org.springframework.core.convert.converter.Converter;

public class StringToMaterialConverter implements Converter<String, Material> {

  @Override
  public Material convert(String value) {
    return Material.lookup(value);
  }

}

** Eigenschaftendatei **

properites


hoge.fuga =Geld

yml


hoge:
  fuga:Geld

** Aufzählungsdefinition **

enum


public enum Material {
    Bronze("Kupfer"),
    Sliver("Silber"),
    Gold("Geld")
    ;

    Material(String label) {
        this.label = label;
    }

    private String label;

    public String getLabel() {
        return this.label;
    }

    public static Material lookup(String label) {
        return Arrays.stream(Material.values())
                .filter(material -> material.getLabel().equals(label))
                .findFirst().orElseThrow(() -> new RuntimeException("unknown label : " + label));
    }

}

Code

Value("${hoge.fuga}")
private Material fuga;

Recommended Posts

Beispielcode zum Zuweisen eines Werts in der Eigenschaftendatei zu einem Feld des erwarteten Typs
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So konvertieren Sie einen Wert eines anderen Typs und weisen ihn einer anderen Variablen zu
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Ich hasse diese Art von Code! Eine Sammlung von Anti-Mustern, die tatsächlich auf dem Feld zu sehen sind
Als ich zu IntelliJ wechselte, gab es einen großen Unterschied in der Codierung der Eigenschaftendatei.
So geben Sie ein Array für den Rückgabewert / das Rückgabeargument einer Methode in der CORBA IDL-Datei an
Beispielcode zum Abrufen der Werte der wichtigsten SQL-Typen in Java + Oracle Database 12c
Es reagiert nicht auf die Beschreibung in .js der Packs-Datei
Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben
Korrigieren Sie den Namen der Kriegsdatei auf den in Maven festgelegten
Fügen Sie dem JAR-Dateinamen in Gradle einen Zeitstempel hinzu
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
[chown] So ändern Sie den Eigentümer einer Datei oder eines Verzeichnisses
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
Korrektur, um eine Erhöhung der DB-Verbindungsnummer mit dem benutzerdefinierten Authentifizierungsanbieter des Cognos SDK-Beispiels zu verhindern
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Android-Entwicklung, wie man den Wert des JSON-Objekts auf null überprüft
Samshin über den Wert des versteckten Feldes
Beispiel zum Entpacken einer gz-Datei in Java
[Hinweis] [Anfänger] Schreiben, wenn der Wert eines Array-Elements in einem sich wiederholenden Satz von Ruby geändert wird
Erstellen eines Beispielprogramms mit dem Problem eines Datenbankspezialisten für DDD-Verbesserung 2
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Beispielquellcode zum Ermitteln des minimalen gemeinsamen Vielfachen mehrerer Werte in Java
Erstellen eines Beispielprogramms mit dem Problem eines Datenbankspezialisten mit DDD-Verbesserung 1
Achten Sie bei Verwendung des Float-Typs auf die Grenzprüfung des Eingabewerts
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird
Memorandum zum Bereinigen des Codes Ruby
Machen Sie einen Rand links vom TextField
Messen Sie die Größe eines Ordners mit Java
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
[Ruby] Code zur Anzeige des Tages
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
Ich möchte den Wert in Ruby erhalten
[Jackson] Eine Geschichte über das Konvertieren des Rückgabewerts des Big Decimal-Typs mit einem benutzerdefinierten Serializer.
[Java] Ganzzahlige Informationen von Zeichen in der Textdatei, die mit der Methode read () erfasst wurden
Beachten Sie (Beispielcode), dass in Minecraft 1.12.2 ein Pflanzenblock wie Sweet Berry von 1.14 hinzugefügt wurde
Installieren Sie mehrere Senden-Schaltflächen in der Rails-Ansicht, um den Wert der gedrückten Schaltfläche abzurufen
Speichern von Dateien mit der angegebenen Erweiterung unter dem in Java angegebenen Verzeichnis in der Liste
Übergeben Sie ein Argument an die Methode und erhalten Sie das Ergebnis der Operation als Rückgabewert
Beispielquellcode der Eingabebeschränkungsfunktion von JTextField (Beispielvalidierung: numerischer Wert von 1 bis 30)