Home >Java >javaTutorial >How to customize Starter in springboot
Customized Starter naming rules
Pay attention to the naming rules of artifactId. Spring official Starter is usually named spring-boot-starter-{name} such as spring-boot-starter -web, Spring officially recommends that unofficial Starter naming should follow the format of {name}-spring-boot-starter, such as mybatis-spring-boot-starter. The artifactId of the project created here is helloworld-spring-boot-starter
Develop Starter steps
Create Starter project
Define the configuration (Properties) class required by Starter
Write the automatic configuration class
Write The spring.factories file loads the automatic configuration class
Write the configuration prompt file spring-configuration-metadata.json (not required)
Specific process
Create a configuration class
@ConfigurationProperties to define the configuration prefix
@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; } }
Write an automatic configuration class
@EnableConfigurationProperties Configure dependent property classes
@ConditionalOnProperty Configure the loading rules of Configuration
value refers to which field of Properties
havingValue refers to loading Configuration when configuring value
matchIfMissing refers to The default value when the value configured field is not configured
@Bean Configure automatically injected beans
Common ones unique to springboot The conditional dependency annotations are:
@ConditionalOnBean. This Bean will be instantiated only when a bean exists in the current context.
@ConditionalOnClass, this Bean will be instantiated only when a class is on the class path.
@ConditionalOnExpression, this Bean will be instantiated only when the expression is true.
@ConditionalOnMissingBean, this Bean will be instantiated only when a bean does not exist in the current context.
@ConditionalOnMissingClass, this Bean will be instantiated only when a certain class does not exist on the class path.
@ConditionalOnNotWebApplication, this Bean will be instantiated only when it is not a web application.
@AutoConfigureAfter, instantiate a bean after it completes automatic configuration.
@AutoConfigureBefore, instantiate a bean before it completes automatic configuration.
@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); } }
Writing the spring.factories file
Spring Boot will scan packages at the same level as the startup class by default. If our Starter is the same as the startup class If they are not under the same main package, you need to configure the spring.factories file to take effect
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ai.base.boot.influxdb.InfluxdbAutoConfiguration
The above is the detailed content of How to customize Starter in springboot. For more information, please follow other related articles on the PHP Chinese website!