Les développeurs qui ne comprennent pas les propriétés au printemps peuvent trouver cela un peu déroutant, principalement parce qu'il existe de nombreuses méthodes de configuration et de nombreuses méthodes d'utilisation.
Cet article n'est pas une analyse de principe ou un article d'analyse de code source, mais j'espère qu'il pourra aider les lecteurs à mieux comprendre et utiliser les propriétés du printemps.
Utilisation des propriétés
Tous les lecteurs de cet article ont utilisé le printemps. Voyons d'abord comment les propriétés sont utilisées. Il existe plusieurs méthodes couramment utilisées au printemps:
1. Utiliser dans le fichier de configuration XML
Autrement dit, la valeur en $ {} est automatiquement remplacée.
<bean id = "xxx"> <propriété name = "url" value = "$ {javadoop.jdbc.url}" /> </ bean>2. Utiliser via l'injection @value
@Value ("$ {javadoop.jdbc.url}") URL de chaîne privée;3. Obtenez par l'environnement
Il y a certaines choses à faire attention dans cette méthode. Toutes les méthodes de configuration ne prennent pas en charge l'obtention des valeurs de propriété via l'interface environnement. Le test personnel ne peut être utilisé que lors de l'utilisation de l'annotation @propertysource, sinon NULL sera obtenu. Quant à la façon de le configurer, j'en parlerai immédiatement ci-dessous.
@AutowiredPrivate Environment Env; public String getUrl () {return env.getProperty ("javadoop.jdbc.url");}S'il est enregistré avec Spring Boot Application.Properties, c'est OK.
Configuration des propriétés
Nous avons mentionné plus tôt comment utiliser les propriétés que nous avons configurées, alors comment les configurer? Spring fournit de nombreuses méthodes de configuration.
1. Configurer via XML
Ce qui suit est la méthode de configuration la plus couramment utilisée, et de nombreux projets sont écrits comme celui-ci:
<Context: Property-placeholder location = "ClassPath: SYS.Properties" />
2. Configurer via @propertysource
La configuration XML précédente est très courante, mais si vous avez également envie d'éliminer tous les fichiers de configuration XML, vous devez utiliser la méthode suivante:
@PropertySource ("CLASSPATH: SYS.Properties") @ ConfigurationPublic Class JavadoopConfig {}Notez que @propertysource doit être utilisé avec @configuration ici, donc je ne vais pas entrer dans les détails.
3. PropertyPlaceHolder Configurer
Si les lecteurs ont vu cela, peu importe s'ils sont surpris. C'est ainsi qu'il a été utilisé avant le printemps 3.1:
<an bean> <propriété name = "Locations"> <sist> <value> classPath: sys.properties </value> </sthing> </ propriété> <propriété name = "IgnoreUnResolVablePlaceHolders" Value = "true" /> <! - Certaines propriétés peuvent être configurées ici -> </ank>
Bien sûr, nous pouvons également utiliser la version de configuration Java correspondante:
@BeanPublic PropertyPlaceHolderConfigurer ProperTiess () {PropertyPlaceHolderConfigurer PPC = new PropertyPlaceHolderConfigurer (); Ressource [] Ressources = new ClassPathResource [] {new ClassPathResource ("SYS.Properties")}; ppc.setLocations (ressources); ppc.SetIgnoreUnResolVablePlaceHolders (true); retourner ppc;}4. PropertySourcesPlaceHolder Configurer
Lorsque le printemps 3.1 a été lancé, PropertySourcesPlaceHolderConfigurer a été introduit, qui est une nouvelle classe. Veuillez noter qu'il existe des sources supplémentaires dans le nom de la propriété PropertyPlaceHolderConfigurer, et le package auquel il appartient est différent. C'est dans le package Spring-Context.
Il n'y a pas de différence de configuration:
<an bean> <propriété name = "Locations"> <sist> <value> classPath: sys.properties </value> </sthing> </ propriété> <propriété name = "IgnoreUnResolVablePlaceHolders" Value = "true" /> <! - Certaines propriétés peuvent être configurées ici -> </ank>
Ayons également une version de configuration Java:
@BeanPublic PropertySourcesPlaceHolderConfigurer Properties () {PropertySourcesPlaceHolderConfigurer PSPC = new PropertySourcesPlaceHolderConfigurer (); Ressource [] Ressources = new ClassPathResource [] {new ClassPathResource ("SYS.Properties")}; pspc.setLocations (ressources); pspc.SetIgnoreUnResolVablePlaceHolders (true); retourner pspc;}Spring Boot lié
Spring Boot est vraiment une bonne chose, et c'est tellement bon de l'utiliser hors de la boîte. Voici une brève introduction au contenu pertinent.
Générez rapidement un projet Spring Boot: https://start.spring.io/
application.properties
Chaque projet a un fichier application.properties par défaut. Ce fichier de configuration n'a pas besoin d'être enregistré comme mentionné précédemment. Spring Boot nous aidera à nous inscrire automatiquement.
Bien sûr, vous pouvez peut-être modifier le nom, spécifiez simplement le nom de votre fichier lors du démarrage:
java -dspring.config.location = classpath: sys.properties -jar app.jar
Application- {Env} .properties
Afin de spécifier différentes configurations pour différents environnements, nous l'utiliserons.
Par exemple, les informations de connexion de la base de données de l'environnement de test et de l'environnement de production sont différentes.
Par conséquent, sur la base de l'application.properties, nous devons également créer de nouvelles applications-dev.properties et application-prd.properties pour configurer des informations liées à l'environnement, puis spécifier l'environnement au démarrage.
java -dspring.profiles.active = prd -jar app.jar
Le résultat est que les configurations dans les fichiers application.properties et application-prd.properties seront enregistrées. S'il y a des clés en double, la priorité dans les fichiers application-prd.properties est plus élevée.
@Configurationproperties
Cette annotation n'est disponible que dans Spring Boot.
Même si vous n'utilisez pas cette annotation, vous pouvez le voir dans un projet open source. Voici une brève introduction.
Prenons un exemple pour être plus intuitif. Comme mentionné précédemment, remplissez les informations suivantes dans le fichier de configuration, vous pouvez choisir d'écrire sur application.properties ou d'utiliser la méthode introduite dans la première section.
javadoop.database.url = jdbc: mysql: javadoop.database.username = adminjavadoop.database.password = admin123456
Fichier Java:
@ Configuration @ configurationProperties (prefix = "javadoop.database") Base de données de classe publique {String URL; Nom d'utilisateur de chaîne; Mot de passe de chaîne; // getters et setters}De cette façon, une base de données Bean of Type est automatiquement enregistrée dans le conteneur à ressort et les propriétés sont définies.
Modifier dynamiquement les valeurs d'attribut pendant le démarrage
Je ne pense pas que cela nécessite trop d'introduction, et ceux qui utilisent Spring Boot devraient essentiellement le savoir.
La configuration d'attribut a un ordre de remplacement, c'est-à-dire lorsque la même clé apparaît, la valeur doit prévaloir.
Paramètres de démarrage> Application- {Env} .properties> application.properties
Démarrer les paramètres Définir dynamiquement les propriétés:
java -djavadoop.database.password = admin4321 -jar app.jar
De plus, vous pouvez également utiliser des variables d'environnement système pour définir des propriétés, spécifier des nombres aléatoires, etc., ce qui est en effet très flexible, mais il est inutile, donc je ne le présenterai pas.
Résumer
Si les lecteurs veulent avoir une compréhension plus approfondie des propriétés de printemps, ils doivent comprendre le code source lié à l'interface de l'environnement de ressort. Il est conseillé aux lecteurs intéressés de rechercher le code source
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.