Home  >  Article  >  Java  >  How to customize Starter in springboot

How to customize Starter in springboot

PHPz
PHPzforward
2023-05-28 15:25:461616browse

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete