springboot自定义Starter过程解析

作者:技术-刘腾飞 时间:2023-07-24 22:24:55 

自定义Starter命名规则

注意artifactId的命名规则,Spring官方Starter通常命名为spring-boot-starter-{name}如 spring-boot-starter-web, Spring官方建议非官方Starter命名应遵循{name}-spring-boot-starter的格式, 如mybatis-spring-boot-starter。这里创建的项目的artifactId为helloworld-spring-boot-starter

开发Starter步骤

  • 创建Starter项目

  • 定义Starter需要的配置(Properties)类

  • 编写自动配置类

  • 编写spring.factories文件加载自动配置类

  • 编写配置提示文件spring-configuration-metadata.json(不是必须的)

具体流程

创建配置类

@ConfigurationProperties 来定义配置的前缀


@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;
}
}

编写自动配置类

  • @EnableConfigurationProperties配置依赖的属性类

  • @ConditionalOnProperty 配置Configuration的加载规则

    • value 指的是Properties的哪个字段

    • havingValue指的是配置value是什么值的时候加载Configuration

    • matchIfMissing 指的是当value配置的字段没有配置时的默认值

  • @Bean 配置自动注入的bean

  • springboot特有的常见的条件依赖注解有:

    • @ConditionalOnBean,仅在当前上下文中存在某个bean时,才会实例化这个Bean。

    • @ConditionalOnClass,某个class位于类路径上,才会实例化这个Bean。

    • @ConditionalOnExpression,当表达式为true的时候,才会实例化这个Bean。

    • @ConditionalOnMissingBean,仅在当前上下文中不存在某个bean时,才会实例化这个Bean。

    • @ConditionalOnMissingClass,某个class在类路径上不存在的时候,才会实例化这个Bean。

    • @ConditionalOnNotWebApplication,不是web应用时才会实例化这个Bean。

    • @AutoConfigureAfter,在某个bean完成自动配置后实例化这个bean。

    • @AutoConfigureBefore,在某个bean完成自动配置前实例化这个bean。


@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);
}
}

编写spring.factories文件

Spring Boot会默认扫描跟启动类平级的包,如果我们的Starter跟启动类不在同一个主包下,需要通过配置spring.factories文件来生效


org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ai.base.boot.influxdb.InfluxdbAutoConfiguration

来源:https://www.cnblogs.com/frankltf/p/11369238.html

标签:spring,boot,自定义,starter
0
投稿

猜你喜欢

  • Handler实现倒计时功能

    2021-06-01 15:24:31
  • android实现欢迎界面效果

    2021-11-05 14:44:52
  • mybatis如何使用Criteria的and和or进行联合查询

    2023-02-23 00:44:13
  • java基础的详细了解第五天

    2023-06-02 16:54:04
  • 详解mybatis-plus配置找不到Mapper接口路径的坑

    2022-03-12 10:37:45
  • Flutter应用集成极光推送的实现示例

    2023-06-24 03:51:04
  • Flutter深色模式适配的实现

    2023-01-22 12:41:03
  • c# 基于wpf,开发OFD电子文档阅读器

    2023-09-08 00:10:02
  • SpringBoot 静态资源导入及首页设置问题

    2023-11-26 22:45:07
  • Java中不可或缺的关键字volatile详析

    2023-07-22 12:11:29
  • Java中的泛型方法详解及简单实例

    2023-09-11 13:28:05
  • Java基础之Thymeleaf的简单使用

    2023-08-24 19:00:22
  • Android判断用户2G/3G/4G移动数据网络

    2022-12-13 03:21:49
  • C#实现计算器窗体程序

    2023-04-09 01:25:42
  • Java优化if-else代码的实战记录

    2023-05-16 22:55:18
  • 举例讲解Java编程中this关键字与super关键字的用法

    2023-03-09 01:46:02
  • java语言注解基础概念详解

    2023-04-13 06:55:55
  • SpringCloud Nacos + Ribbon 调用服务的实现方式(两种)

    2023-11-18 09:30:38
  • java高并发ScheduledThreadPoolExecutor与Timer区别

    2023-08-11 03:08:29
  • 详解springmvc常用5种注解

    2023-03-27 15:15:43
  • asp之家 软件编程 m.aspxhome.com