Home > Java > javaTutorial > body text

How to customize Starter in springboot

PHPz
Release: 2023-05-28 15:25:46
forward
1646 people have browsed it

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;
 }
}
Copy after login

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);
}
}
Copy after login

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
Copy after login

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!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!