Heim > Java > javaLernprogramm > Hauptteil

So verwenden Sie @ConfigurationProperties in SpringBoot

王林
Freigeben: 2023-05-19 11:10:06
nach vorne
1425 Leute haben es durchsucht

Abhängigkeiten hinzufügen

Zuerst müssen wir Spring Boot-Abhängigkeiten hinzufügen:

org.springframework.boot spring-boot-starter-parent

Ein einfaches Beispiel

@ConfigurationProperties muss in Verbindung mit @Configuration verwendet werden, wir machen es normalerweise in a POJO-Konfiguration:

@Data@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { private String hostName; private int port from;}

Das obige Beispiel liest alle Eigenschaftendateien, die mit mail Properties beginnen und gleichen Sie sie mit Feldern in der Bean ab:

#Einfache Eigenschaftenmail.hostname=host@mail.commail.port=9000mail.from=mailer@mail.com

Der Attributnamensabgleich von Spring unterstützt viele Formate, wie folgt. Zeigt alle Formate an kann mit hostName abgeglichen werden:

mail.hostNamemail.hostnamemail.host_namemail.host-namemail.HOST_NAME

Wenn Sie @Configuration nicht verwenden möchten, müssen Sie die Konfigurationsdatei wie folgt manuell in die Annotation @EnableConfigurationProperties importieren:

@SpringBootApplication@EnableConfigurationProperties(ConfigProperties.class)public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args);

Wir können die Konfigurationsdatei auch in @ angeben ConfigurationPropertiesScan Path:

@SpringBootApplication@ConfigurationPropertiesScan("com.flydean.config") public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args); }}

In diesem In diesem Fall sucht das Programm nur nach Konfigurationsdateien im Paket com.flydean.config.

Attributverschachtelung

Wir können unten ein Beispiel nehmen und ein gemeinsames POJO erstellen:

@Datapublic class Credentials { private String authMethod; private String username ;}

Dann erstellen Sie eine verschachtelte Konfigurationsdatei:

@Data@Configuration@ConfigurationProperties(prefix = „nestmail“) public class NestConfigProperties { private int port; private String from; private Map previousHeaders; private Credentials credentials;}

Die entsprechende Eigenschaftendatei lautet wie folgt:

# Nest Simple Propertiesnestmail.hostname=mailer@mail.comnestmail.port=9000nestmail.from=mailer@mail.com# List Propertiesnestmail. defaultRecipients[0]=admin@mail.comnestmail.defaultRecipients[1]=owner@mail.com#Map Propertiesnestmail.additionalHeaders.redelivery=trueenestmail.additionalHeaders.secure=true#Object Propertiesnestmail.credentials.username=johnnestmail.credentials .password= passwortnestmail.credentials.authMethod=SHA1

@ConfigurationProperties und @Bean

@ConfigurationProperties können auch mit @Bean wie folgt verwendet werden:

@Datapublic class Item { private String name; private int size;}

Sehen Sie, wie Zu verwenden:

@Data@Configurationpublic class BeanConfigProperties { @Bean @ConfigurationProperties(prefix = "item") public Item item() { return new Item(); }}

Attributüberprüfung

@ ConfigurationProperties kann das verwenden Standard-JSR-303-Format für die Eigenschaftsvalidierung. Nehmen wir ein Beispiel:

@Data@Validated@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { @NotEmpty private String hostName; @Min(1025) @Max(65536) private int port; @Pattern(regexp = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$") privater String von;}

If unser If Wenn die Eigenschaft die Einspruchsbedingungen nicht erfüllt, kann die folgende Ausnahme auftreten:

Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind Properties under „mail“ to com.flydean.config.ConfigProperties $$EnhancerBySpringCGLIB$ $f0f87cb9 fehlgeschlagen: Eigenschaft: mail.port Wert: 0 Grund: Der Mindestwert darf nicht kleiner als 1025 sein. Eigenschaft: mail.hostName Wert: null Grund: Darf nicht leer sein. Aktion: Aktualisieren Sie die Konfiguration Ihrer Anwendung. Der Prozess wurde mit Exit-Code 1 abgeschlossen

Eigenschaftskonvertierung

@ConfigurationProperties unterstützt auch mehrere Eigenschaftskonvertierungen. Nachfolgend nehmen wir Duration und DataSize als Beispiele:

Wir definieren zwei Duration-Felder:

@ConfigurationProperties(prefix = „conversion“) public class PropertyConversion { private Duration timeInDefaultUnit; private Duration timeInNano ; ...}

Definieren Sie diese beiden Felder in der Eigenschaftendatei:

conversion.timeInDefaultUnit=10conversion.timeInNano=9ns

Wir sehen, dass die oben genannten Attribute Einheiten haben können. Optionale Einheiten sind: ns, us, ms, s, m, h und d, entsprechend Nanosekunden, Mikrosekunden, Millisekunden, Sekunden, Minuten, Stunden und Tagen. Die Standardeinheit ist Millisekunden. Wir können die Einheit auch in der Anmerkung angeben:

@DurationUnit(ChronoUnit.DAYS)private Duration timeInDays;

Die entsprechende Konfigurationsdatei lautet wie folgt:

conversion.timeInDays=2

Werfen wir einen Blick auf die Verwendung DataSize:

private DataSize sizeInDefaultUnit; private DataSize sizeInGB; @DataSizeUnit(DataUnit.TERABYTES)private DataSize sizeInTB;

Entsprechende Eigenschaftsdatei:

conversion.sizeInDefaultUnit=300conversion.sizeInTB=4

Datasize unterstützt B, KB, MB, GB und TB.

Benutzerdefinierter Konverter

Derselbe Spring Boot unterstützt auch benutzerdefinierte Attributkonverter. Wir definieren zunächst eine POJO-Klasse:

public class Employee { private String name; private double pay;}

Die entsprechende Eigenschaftsdatei:

conversion.employee=john,2000

Wir müssen eine Konvertierungsklasse des Konverters implementieren Schnittstelle selbst:

@Component@ConfigurationPropertiesBindingpublic class EmployeeConverter implementiert Converter { @Override public Employee convert(String from) { String[] data = from.split(","); return new Employee(data[0 ], Double.parseDouble(data[1]));

Das obige ist der detaillierte Inhalt vonSo verwenden Sie @ConfigurationProperties in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage