Maison  >  Article  >  Java  >  Quels sont les chemins de chargement par défaut de Springboot ?

Quels sont les chemins de chargement par défaut de Springboot ?

王林
王林avant
2023-05-15 22:16:041157parcourir

1. Première introduction au fichier application.properties/.yml

Comme mentionné précédemment, le fichier application.properties n'est pas configuré. Maintenant, je crée un nouveau fichier application.properties dans le dossier main/resources et j'écris la configuration suivante

.

Quels sont les chemins de chargement par défaut de Springboot ?

Ensuite, démarrez le projet,

Quels sont les chemins de chargement par défaut de Springboot ?

D'accord, grâce à la capture d'écran du résultat de démarrage ci-dessus, vous pouvez voir que le service est démarré sur le port "9090". Ensuite, si vous configurez un fichier application.yml dans ce répertoire, les résultats de démarrage sont les suivants. Vous pouvez voir que le service est toujours démarré sur le port "9090". Pour cette raison, nous tirons cette conclusion : s'il y a deux fichiers application.properties et application.yml dans le même dossier, alors le fichier application.properties écrasera le fichier application.yml et le fichier application.properties prendra effet.

Qu'est-ce qu'un fichier yml ? Quels sont les chemins de chargement par défaut de Springboot ?

Yml est un format de fichier écrit en YAML (YAML Aint Markup Language), qui est un moyen très intuitif de sérialiser des données. Il s'agit tout simplement d'un nouveau format de fichier, similaire au XML et aux fichiers de propriétés.

2. Le fichier application.properties/.yml peut-il se trouver dans d'autres chemins ?

Quels sont les chemins de chargement par défaut de Springboot ? Les amis qui ont vu ce titre se demanderont certainement si application.properties peut se trouver dans d'autres chemins ? Oui, vous l'avez bien deviné ? Nous mettons application.properties/.yml dans le dossier main/resources Lorsque le projet est en cours d'exécution, les fichiers de ce dossier seront copiés dans le dossier classes, ce chemin est donc également appelé chemin de classe.

Recherchez "application.properties" dans le code source de Springboot et trouvez une classe comme ConfigFileApplicationListener. Il y a le paragraphe suivant dans les commentaires de cette classe,

* {@link EnvironmentPostProcessor} that configures the context environment by loading
 * properties from well known file locations. By default properties will be loaded from
 * 'application.properties' and/or 'application.yml' files in the following locations:
 * <ul>
 * <li>file:./config/</li>
 * <li>file:./config/{@literal *}/</li>
 * <li>file:./</li>
 * <li>classpath:config/</li>
 * <li>classpath:</li>
 * </ul>

Cela signifie approximativement "EnvironmentPostProcessor charge les propriétés à partir de chemins de fichiers bien connus. Configurez l'environnement de contexte. Les propriétés par défaut proviennent du fichier application.properties/application.yml. Ces fichiers proviennent du répertoire de configuration

file:./ sous le dossier racine (dossier du projet) du chemin suivant ",

file. :./config/ config/{@literal *}/ config/*/ répertoire sous le dossier de fichiers racine (dossier du projet)

file:./

classpath:config/ config sous classpath sous le dossier de fichiers racine (dossier du projet ) /

classpath : Sous classpath

OK, nous savons déjà que le fichier application.properties/application.yml sera chargé à partir des emplacements ci-dessus, et le main/resources que nous avons configuré est en fait le classpath ci-dessus :, puis ce qui précède Ces chemins ont-ils également un ordre ? Continuez à parcourir la classe ConfigFileApplicationListener et voyez un attribut comme celui ci-dessous

// Note the order is from least to most specific (last one wins)
private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/";

Vous pouvez voir que ce DEFAULT_SEARCH_LOCATIONS spécifie les valeurs ci-dessus, et les commentaires ci-dessus sont très intéressants. Pour bien le traduire, vérifions-le à travers des exemples. Maintenant que nous connaissons les priorités de application.properties et application.yml, nous pouvons simplement utiliser le fichier application.properties pour le vérifier. Il y a application.properties sous resources/config (chemin d'exécution : classpath:/config/),

.

Regardez quel port est utilisé actuellement,

utilise 9092, ce qui signifie que resources/config a une priorité plus élevée que resources, c'est-à-dire classpath:/config/>classpath:/. Jetons un coup d'œil au fichier :/

Quels sont les chemins de chargement par défaut de Springboot ?

. Nous avons créé un nouveau fichier application.properties sous le chemin racine du projet. Le serveur.port de départ est 9093. Regardons quel port le service utilise. 9093. , la priorité est : file:/>classpath:/config/>classpath:/. Maintenant, j'ajoute le chemin config/my/ au chemin du projet et j'ajoute le fichier application.properties

Quels sont les chemins de chargement par défaut de Springboot ?

Les résultats du test sont les suivants,

Quels sont les chemins de chargement par défaut de Springboot ?

.

Le service est démarré sur le port "9094", indiquant que la priorité est : file:./config/*/>file:./>classpath:/>classpath:/config/, et le dernier le point de vérification est file:/config, je pense que cela n'a pas besoin d'être vérifié et doit avoir la priorité la plus élevée. Par conséquent, l'ordre de priorité de haut en bas est : file:./config/ > / > file:. / > classpath:/ > classpath:/config/, en termes simples : config sous le chemin racine du projet>config/*/ sous le chemin racine du projet>chemin racine du projet>classpath:/config> chemin de classe :/

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer