Règles de dénomination personnalisées du Starter
Faites attention aux règles de dénomination de l'artefactId. Le Starter officiel de Spring est généralement nommé spring-boot-starter-{name}, comme spring-boot-starter-web, le responsable de Spring recommande ce Starter non officiel. la dénomination doit suivre le format de {name}-spring-boot-starter, tel que mybatis-spring-boot-starter. L'artefactId du projet créé ici est helloworld-spring-boot-starter
Développer les étapes de démarrage
Créer un projet Starter
Définir la classe de configuration (Propriétés) requise par Starter
Write Classe de configuration automatique
Écrivez le fichier spring.factories pour charger la classe de configuration automatique
Écrivez le fichier d'invite de configuration spring-configuration-metadata.json (pas nécessaire)
Processus spécifique
Créez la classe de configuration
@ConfigurationProperties pour définir le préfixe de la configuration
@EnableConfigurationProperties(InfluxdbProperties.class) @ConfigurationProperties(prefix = "spring.influxdb") public class InfluxdbProperties { private String username; public String getDatabase() { return database; } public void setDatabase(String database) { this.database = database; } }
Écrivez la classe de configuration automatique
@EnableConfigurationProperties pour configurer la classe de propriétés dépendantes
@ConditionalOnProperty pour configurer les règles de chargement de Configuration
À quelles propriétés la valeur fait-elle référence ? Le champ
havingValue fait référence au chargement de la configuration lors de la configuration de la valeur
matchIfMissing fait référence à la valeur par défaut lorsque le champ de valeur configuré n'est pas configuré
@Bean configure le bean injecté automatiquement
Les annotations de dépendance conditionnelle courantes uniques à Springboot incluent :
@ConditionalOnBean, qui instanciera un bean uniquement lorsqu'il existe dans le contexte actuel.
@ConditionalOnClass, ce Bean sera instancié uniquement lorsqu'une classe est sur le chemin de classe.
@ConditionalOnExpression, ce Bean sera instancié uniquement lorsque l'expression est vraie.
@ConditionalOnMissingBean, ce bean sera instancié uniquement lorsqu'un bean n'existe pas dans le contexte actuel.
@ConditionalOnMissingClass, ce Bean ne sera instancié que lorsqu'une classe n'existe pas sur le chemin de classe.
@ConditionalOnNotWebApplication, ce Bean sera instancié uniquement lorsqu'il ne s'agit pas d'une application web.
@AutoConfigureAfter, instanciez un bean une fois sa configuration automatique terminée.
@AutoConfigureBefore, instanciez un bean avant qu'il ne termine la configuration automatique.
@Configuration @Order(1) @EnableConfigurationProperties(InfluxdbProperties.class) @ConditionalOnClass(InfluxdbProperties.class) @ConditionalOnProperty(prefix = "spring.influxdb", value = "use-influxdb", havingValue="true" ,matchIfMissing = false) public class InfluxdbAutoConfiguration { private String scanEntitySuffix = "Entity.class"; @Bean @ConditionalOnMissingBean(AiInfluxdbTemplate.class) @Order(Ordered.HIGHEST_PRECEDENCE) public AiInfluxdbTemplate AiInfluxdbTemplate(InfluxdbProperties influxdbProperties){ return new AiInfluxdbTemplate(influxdbProperties); } }
Écrivez le fichier spring.factories
Spring Boot analysera les packages au même niveau que la classe de démarrage par défaut. Si nos classes Starter et startup ne sont pas sous le même package principal, nous devons configurer le. fichier spring.factories pour prendre effet
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ai.base.boot.influxdb.InfluxdbAutoConfiguration
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!