


Quelles sont les méthodes permettant à SpringBoot de lire les fichiers de configuration Yml ?
1. Utilisation de base, utilisez l'annotation @Autowired pour injecter la classe Environment
Cette méthode est plus courante, tout comme l'injection de service ou de dao, déclarez une variable de classe Environment et ajoutez le @Autowire annotation. Comme suit :
import org.springframework.core.env.Environment; @Autowired private Environment environment;
La méthode d'utilisation consiste à lire les informations dans le fichier de configuration via la méthode getProperty(key) Le code est le suivant :
1). Configuration dans Yml
heycloud: jobInfo: http://www.baidu.com
2). Obtenir la configuration
//获取url(注意:key一定要写完整,有几层就写几层,每层的名字用点分隔。) String resultUrl = environment.getProperty("heycloud.jobInfo");
Remarque : Cette méthode de lecture des informations de configuration présente certaines limites, notamment les suivantes :
Limitation 1 : #🎜🎜 #
Si vous souhaitez lire les informations de configuration dans une méthode statique, vous ne pouvez pas simplement définir Environment comme statique. En raison du mécanisme d'injection, l'injection d'un bean statique ne donnera qu'un bean vide, c'est-à-dire. Autrement dit, la valeur de la variable est null , une fois l'objet bean utilisé, une exception de pointeur null sera signalée. Manière d'écriture incorrecte :@Autowired private static Environment environment;//这是错误写法,environment只会是null public void test(){ //获取url String resultUrl = environment.getProperty("heycloud.jobInfo");//一旦使用environment变量就会报空指针异常 }Manière d'écriture correcte : 1. Définir l'environnement comme statique ; 2. Ajoutez Go à la méthode getter/setter de l'environnement 3 Ajoutez l'annotation @Autowire à la méthode set. De cette façon, il peut être injecté efficacement. Il convient de noter que seule la méthode get doit être statique, et la méthode set n'a pas besoin d'être statique, sinon l'environnement obtenu le sera toujours. nul. Le code correct est le suivant :
private static Environment environment; @Autowired public void setEnvironment(Environment environment) { this.environment = environment; } public static Environment getEnvironment() { return environment; }Limitation 2 : L'environnement ne peut pas lire directement le fichier de configuration Yml personnalisé, vous devez ajouter un classe de configuration, exposez le fichier Yml personnalisé à l'environnement Spring. Solution : Définissez une classe de configuration pour charger le contenu du fichier Yml personnalisé dans l'environnement Le code est le suivant :
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; /** * 配置类 * @Description 读取自定义Yml格式配置文件 * @Date 2021/3/15 10:40 * @Created by LSH */ @Component public class SqlConfig { @Bean public PropertySourcesPlaceholderConfigurer getSqlConfigurer() { PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); YamlPropertiesFactoryBean sqlConfigBean = new YamlPropertiesFactoryBean(); sqlConfigBean.setResources(new ClassPathResource("sql-properties.yml")); configurer.setProperties(sqlConfigBean.getObject()); return configurer; } }Une fois défini If. vous disposez d'une bonne classe de configuration, vous pouvez utiliser l'annotation @Autowired pour injecter la classe Environment afin d'obtenir des informations de configuration personnalisées. Bref, si vous rencontrez le problème de la limitation 2, il vous suffit d'écrire une classe de configuration supplémentaire. Limitation 3 : En raison de l'ordre de chargement, la méthode d'utilisation des annotations n'est pas adaptée à la lecture de configurations dans des blocs de code statiques (static{}), même si des limitations sont La solution 1 utilisée ne fonctionne pas non plus. Je n'ai pas encore trouvé de solution. J'apprécie les conseils d'experts de passage. En fait, vous pouvez également charger manuellement la classe dans le bloc statique et charger la configuration en lisant le chemin du fichier Yml, mais ce n'est pas assez concis si plusieurs classes ont cette exigence, chacune. la classe doit en écrire une. Les classes sont chargées sur le tas, donc je ne suis pas entré dans les détails. Cependant, il existe plusieurs façons de lire le fichier de configuration et il n'est pas nécessaire d'identifier une arborescence spécifique. 2. Utilisation de base, utilisez l'annotation @Value pour injecter directement les informations de configuration La méthode d'utilisation est très simple, déclarez les attributs des membres de la classe et utilisez l'annotation @Value pour mettre directement informations de configuration dans le membre. Dans l'attribut, le format est : @Value("${xxx.xxx.xxx}"). Le code est le suivant :
@Value("${sql.newrest.CAS_GRID}") private String CAS_GRID;Remarque : 1 Identique à la première méthode, la clé doit être écrite complètement. autant de calques qu'il y a de calques, chacun séparé par des points. 2. Cette méthode présente les mêmes limitations que la première méthode. 3. Méthode avancée Définissez une classe d'outils, annotez-la avec @Component pour devenir une classe de configuration, puis héritez d'ApplicationRunner, réécrivez run(), puis injectez l'environnement classe pour obtenir la configuration. Les informations de configuration peuvent être obtenues n’importe où et à tout moment. Le code est le suivant : 1). Définissez la classe de configuration et déclarez quelques propriétés statiques pour recevoir les informations de configuration
@Slf4j @Component public class BaseConfig implements ApplicationRunner { @Autowired private Environment environment; public static String pro1; public static String pro2; public static String pro3; @Override public void run(ApplicationArguments args){ pro1=environment.getProperty("pro1"); pro2=environment.getProperty("pro2"); pro3=environment.getProperty("pro3"); } }2). Méthode d'utilisation Les informations de configuration peuvent être obtenues directement en appelant les propriétés statiques de la classe de configuration. Elles ne se limitent pas aux méthodes conventionnelles, aux méthodes statiques et aux blocs de code statiques. une classe de configuration pour obtenir indirectement les informations de configuration.
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!

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.

L'article discute de la création et de l'utilisation de bibliothèques Java personnalisées (fichiers JAR) avec un versioning approprié et une gestion des dépendances, à l'aide d'outils comme Maven et Gradle.

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Version Mac de WebStorm
Outils de développement JavaScript utiles

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit