手写一个SpringBoot Starter自动配置动态的创建RestHighLevelClient

1、背景

最近做了个elasticsearch搜索的功能,因为会有多个项目模块用到所以决定做成一个springboot starter以便于其他地方用到就不需要作过多的配置,加之不久前出现一个项目的es服务出问题导致几个共用一个es集群的项目都受到影响,需要不同项目之间用的es隔离开来,所以决定手写自定义的Starter并动态的创建RestHighLevelClient。

2、starter的大概结构

请添加图片描述

3、开发流程

第一步创建一个springboot项目,命名为starter-elasticsearch

创建DynamicElasticsearchProperties类,通过@ConfigurationProperties注解把yml或者properties配置文件转化为bean,从而获取yml或者properites配置文件的属性

创建ElasticsearchProperties类,对应yml或者properites配置文件的属性

创建自动配置的bean,命名为ElasticsearchAutoConfiguration,通过@EnableConfigurationProperties()注解使得@ConfigurationProperties注解生效,后续自动装配动态的创建RestHighLevelClient将在这个类进行

假设需要引入es的项目自定义yml配置如下:

maoshi8:
  elasticsearch:
    datasource:
      node1:
        host: 123.123.123.123
        port: 9200
      node2:
        host: 111.111.111.111
        port: 9200

DynamicElasticsearchProperties类:

@ConfigurationProperties(prefix = "maoshi8.elasticsearch")
public class DynamicElasticsearchProperties {
   

    /**
     * 配置多动态数据源key datasource id
     */
    private Map<String, ElasticsearchProperties> datasource = new HashMap<String, ElasticsearchProperties>();

    public Map<String, ElasticsearchProperties> getDatasource() {
   
        return datasource;
    }

    public void setDatasource(Map<String, ElasticsearchProperties> datasource) {
   
        this.datasource = datasource;
    }

}
@Data
public class ElasticsearchProperties {
   

	private String schema = "http";
	private String host;
	private Integer port;
	private String username = "elastic";
	private String password = "******";
	private int connectTimeOut = 1000;
	private int socketTime
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值