Ajouter des dépendances
Nous devons d'abord ajouter des dépendances Spring Boot :
Un exemple simple
@ConfigurationProperties doit être utilisé en conjonction avec @Configuration, nous le faisons habituellement dans une configuration POJO :
@Data@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { private String hostName; private int port; private String from;}
L'exemple ci-dessus lira tous les fichiers de propriétés commençant par les attributs de messagerie , et mis en correspondance avec les champs du bean :
#Simple Propertiesmail.hostname=host@mail.commail.port=9000mail.from=mailer@mail.com
La correspondance du nom d'attribut de Spring prend en charge de nombreux formats, comme suit Indique que tous les formats peuvent correspondre à hostName :
mail.hostNamemail.hostnamemail.host_namemail.host-namemail.HOST_NAME
Si vous ne souhaitez pas utiliser @Configuration, vous devez importer manuellement le fichier de configuration dans l'annotation @EnableConfigurationProperties comme suit :
@SpringBootApplication@EnableConfigurationProperties(ConfigProperties.class)public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args }}
Nous pouvons également spécifier le fichier de configuration dans @ConfigurationPropertiesScan Chemin :
@SpringBootApplication@ConfigurationPropertiesScan("com.flydean.config") public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args); dans ce cas, le programme recherchera uniquement les fichiers de configuration dans le package com.flydean.config.
Imbrication d'attributsNous pouvons imbriquer une classe, une liste, une carte. Prenons un exemple ci-dessous et créons d'abord un POJO commun :
@Datapublic class Credentials { private String authMethod ; private String username ;}
Créez ensuite un fichier de configuration imbriqué :
@Data@Configuration@ConfigurationProperties(prefix = "nestmail") public class NestConfigProperties { private String host; private String from; private List
@ConfigurationProperties peuvent également être utilisés avec @Bean comme suit :
@Datapublic class Item { private String name;} Découvrez comment à utiliser :
@Data@Configurationpublic class BeanConfigProperties { @Bean @ConfigurationProperties(prefix = "item") public Item item() { return new Item( }}
Vérification d'attribut@ ConfigurationProperties peut utiliser le format standard JSR-303 pour la validation des propriétés. Prenons un exemple :
@Data@Validated@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { @NotEmpty private String hostName; = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$") chaîne privée de;}Si notre Si la propriété ne remplit pas les conditions d'appel, l'exception suivante peut se produire :
Liaison à la cible org.springframework.boot.context.properties.bind.BindException : échec de la liaison des propriétés sous « mail » à com.flydean.config.ConfigProperties $$EnhancerBySpringCGLIB$ $f0f87cb9 a échoué : Propriété : mail.port Valeur : 0 Raison : La valeur minimale ne peut pas être inférieure à 1025 Propriété : mail.hostName Valeur : null Raison : Ne peut pas être vide Action : Mettez à jour la configuration de votre application. Processus terminé avec le code de sortie 1
Conversion de propriétés@ConfigurationProperties prend également en charge plusieurs conversions de propriétés. Ci-dessous, nous prenons Duration et DataSize comme exemples :
Nous définissons deux champs de Durée : @ConfigurationProperties(prefix = "conversion") public class PropertyConversion { private Duration. timeInDefaultUnit; private Duration timeInNano ...}
Définissez ces deux champs dans le fichier de propriétés :
conversion.timeInDefaultUnit=10conversion.timeInNano=9ns
Nous voyons que les attributs ci-dessus peuvent avoir des unités. Les unités facultatives sont : ns, us, ms, s, m, h et d, correspondant respectivement aux nanosecondes, microsecondes, millisecondes, secondes, minutes, heures et jours. L'unité par défaut est la milliseconde. On peut également préciser l'unité dans l'annotation :
@DurationUnit(ChronoUnit.DAYS)private Duration timeInDays;
Le fichier de configuration correspondant est le suivant :
conversion.timeInDays=2
Voyons comment utiliser DataSize :
private DataSize sizeInDefaultUnit ; private DataSize sizeInGB ; @DataSizeUnit(DataUnit.TERABYTES)private DataSize sizeInTB ;
Fichier de propriétés correspondant :
Datasize prend en charge B, Ko, Mo, Go et To.
Convertisseur personnaliséLe même Spring Boot prend également en charge les convertisseurs d'attributs personnalisés. Nous définissons d'abord une classe POJO :
public class Employee { private String name; private double salaire;}
Le fichier de propriétés correspondant :
conversion.employee=john,2000
Nous devons implémenter une classe de conversion du Converter interface nous - mêmes :
@Component@ConfigurationPropertiesBindingpublic class EmployeeConverter implémente Converter
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!