springboot自定义Starter过程解析

自定义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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot 自定义starter的示例代码

    SpringBoot 个人感觉特点: 1)众多库的集合(各种Starter),方便快速构建应用系统. 2)自动配置spring(通过AutoConfiguration机制),简化配置,也方便扩展新的Starter. 3)内嵌web容器,无需WAR部署. 创建一个用maven构建的springboot项目 pom文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht

  • Spring boot创建自定义starter的完整步骤

    前言: Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,springboot官方同时也为开发人员封装了各种各样方便好用的starter模块,例如: spring-boot-starter-web//spring MVC相关 spring-boot-starter-aop //切面编程相关 spring-boot-starter-cache //缓存相关 starter的出现极大的

  • spring boot 自定义starter的实现教程

    spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢? 这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的. 一. 建 starter 项目 自定义的starter, 项目命名规范是: 自定义名-spring-boot-starter 先来看一下, 我最后的目录结构 1. 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

  • springboot自定义Starter的具体流程

    自定义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

  • SpringBoot自定义starter实例代码

    一.简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入SpringBoot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能.即使是这样,SpringBoot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对SpringBoot的使用. 下面话不多说了,来一起看看详细的介绍吧 二.如何自定义starter 1.实例 如何编写自动配置 ? 我们参照@WebMvcAutoConfigurati

  • SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    经过上一篇的介绍,相信小伙伴们已经按奈不住内心对springboot的向往,本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的: 1.首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter <dependency> <groupId>org.spr

  • springboot自定义Starter过程解析

    自定义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

  • SpringBoot自定义FailureAnalyzer过程解析

    这篇文章主要介绍了SpringBoot自定义FailureAnalyzer,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 官网说明 1.1 创建自己的 FailureAnalyzer FailureAnalyzer是一种在启动时拦截 exception 并将其转换为 human-readable 消息的好方法,包含在故障分析中. Spring Boot 为 application context 相关的 exceptions,JSR-303 验

  • springboot自定义starter实现过程图解

    这篇文章主要介绍了springboot自定义starter实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.创建一个Empty Project 2.在该工程中点击+,选择new module,新建一个maven工程 点击确定. 3.在该工程中点击+,选择new module,新建一个Spring Initializr工程 后面直接默认next,然后点击finishi. 两个都创建完毕之后点击apply,点击OK.得到如下结构: 4

  • SpringBoot整合FastJson过程解析

    这篇文章主要介绍了SpringBoot整合FastJson过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.Maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.33</version> </dependency&

  • springboot自定义异常视图过程解析

    这篇文章主要介绍了springboot自定义异常视图过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.源码分析 先看源码再写自己的自定义异常视图 resolveErrorView()函数首先调用了一个返回ModelAndView的函数,该函数所需的参数是一个状态码的字符串,和一个map集合,该集合是错误信息 也就是下图这个函数 上图函数判断你是否提供了templates/error/下的动态错误页 如果提供了直接返回视图名和错误信息

  • 使用SpringBoot自定义starter的完整步骤

    前言 使用过SpringBoot的都应该知道,一个SpringBoot 项目就是由一个一个 Starter 组成的,一个 Starter 代表该项目的 SpringBoot 启动依赖,除了官方已有的 Starter,我们可以根据自己的需要自定义新的Starter. 一.自定义SpringBoot Starter 自定义Starter,首选需要实现自动化配置,而要实现自动化配置需要满足以下两个条件: (1)能够自动配置项目所需要的配置信息,也就是自动加载依赖环境: (2)能够根据项目提供的信息自动

  • springboot自定义starter方法及注解实例

    目录 SpringBoot starter 自定义starter 自定义starter步骤 实现 打包测试 注解解释 SpringBoot starter 用了springboot 那么久了居然都还没自定义过starter,想想都觉得羞愧,所以今天来玩一下. SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置.star

  • SpringBoot自定义starter启动器的实现思路

    目录 一.引言 二. 需求说明 三. 设计思路 四. 实现步骤 1. Step1 业务定义 2. Step2 自动配置 2.1 HelloService类 2.2 HelloProperties类 2.3 HelloServiceAutoConfiguration类 3. Step3 工厂文件 4. Step4 安装 5. Step5 引入使用 5.1 在应用中添加自定义starter依赖坐标 5.2 编写配置信息 5.3 编写测试的Controller 5.4 打开浏览器输入Controlle

  • python导入不同目录下的自定义模块过程解析

    这篇文章主要介绍了python导入不同目录下的自定义模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.代码目录结构 自定义的模块在Common包下,Study文件下SelectionSort.py文件导入自定义的模块 二.源码 2.1:SelectionSort.py文件 python导包默认是从sys.path中搜索的. sys.path结果如下:['D:\\PyCharm\\source\\Study', 'D:\\PyCha

  • 基于springboot集成hbase过程解析

    这篇文章主要介绍了基于springboot集成hbase过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot-habse: https://github.com/spring-projects/spring-hadoop-samples/tree/master/hbase 依赖: <dependency> <groupId>org.springframework.data</groupId> &

随机推荐