Clickhouse 特性和优势
Posted ibeisbsj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clickhouse 特性和优势相关的知识,希望对你有一定的参考价值。
导语
如何开发一个自定义的 starter
Java SPI 机制简介
Java SPI 机制示例
Spring Boot SPI 机制底层实现
开发一个自定义 starter
自定义 starter 优化
总结
导语
熟悉 Spring Boot 的同学都知道,Spring Boot 提供了很多开箱即用的 starter,比如 spring-boot-starter-mail、spring-boot-starter-data-redis 等等,使用这些 starter 非常简单,引入依赖,再在配置文件中配置相关属性即可。本课程教您自己开发一个 starter,具备了这个技能后,您可以在工作中封装自己业务相关的各种 starter。
如何开发一个自定义的 starter
开发一个 starter 简单来说以下几步即可:
一个/多个自定义配置的属性配置类(可选)
一个/多个自动配置类
自动配置类写入到 Spring Boot 的 SPI 机制配置文件:spring.factories
Java SPI 机制简介
Spring Boot 的 starter 的核心其实就是通过 SPI 机制自动注入配置类,不过是它自己实现的一套 SPI 机制,我们先了解一下 Java 的 SPI 机制。
SPI 全称 Service Provider Interface,是 Java 提供的一套用来被第三方实现或者扩展的 API,它可以用来启用框架扩展和替换组件。
SPI 的大概流程是:
调用方 –> 标准服务接口 –> 本地服务发现 (配置文件) –> 具体实现
所以 Java SPI 实际上是“基于接口的编程+策略模式+配置文件” 组合实现的动态加载机制。
一个 SPI 的典型案例就是 JDBC 的驱动,Java JDBC 定义接口规范(java.sql.Driver),各个数据库厂商(mysql/Oracle/MS SQLServer 等)去完成具体的实现,然后通过 SPI 配置文件引入具体的实现类,如下图:
jdbc spi
Java SPI 机制示例
一个简单的 Java SPI 开发步骤:
定义一个业务接口
编写接口实现类
创建 SPI 的配置文件,实现类路径写入配置文件中
通过 Java SPI 机制调用
java spi例子
Spring Boot SPI 机制底层实现
了解了 Java 的 SPI 机制后,基本也能猜出 Spring Boot 的 SPI 实现了,基本流程是一样的:
读取配置文件 –> 将具体的实现类装配到 Spring Boot 的上下文环境中
接下来我们从源码中查找答案。
入口:Spring Boot 的启动类,@SpringBootApplication 注解,查看源码可以发现这是一个组合注解,包括 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM,
classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
@Enab
隐藏内容
以上是关于Clickhouse 特性和优势的主要内容,如果未能解决你的问题,请参考以下文章
TDSQL-A ClickHouse 产品概述 优势和应用场景
[新星计划]一文快速了解ClickHouse 战斗民族的开源搜索引擎(超详细解读+快速入门)
客快物流大数据项目(八十六):ClickHouse的深入了解