一、starter是什么?
在讨论starter到底是什么之前,先回顾一下在没有starter的时候,我们是如何开发的,以SpringMVC为例。
- 引入spring,springmvc相关依赖
- 在web.xml中配置servlet,listener等配置项
- 在xxx.xml中配置处理器映射器,处理器适配器,视图解析器等配置项
这些步骤,在我们每次使用SpringMVC进行开发的时候,都需要进行重复、繁复且容易出错的前置工作。
starter就是对上述过程的一个抽象,你能够获得一个你需要的技术一站式服务,无需进行这些重复的工作(处理依赖,配置)。有了starter,只需要引入starter依赖并在application.yml中配置响应的参数,就能够实现自动装配。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二、自定义starter并使用
- 从上面对starter的分析,可以总结出,starter需要完成以下几个目标:
- 当满足条件时能够生成定义的Bean,并注册到容器中去;
- 能够自动配置项目所需要的配置;
- 为了实现上述目标,自定义starter涉及模块如下:
- 自动配置类,用来初始化相关的 bean ;
- 指明自动配置类的配置文件
META-INF\spring.factories
;
项目的@SpringBootApplication注解会解析spring.factories文件,并装配该文件中配置的配置类。
- 自定义属性实体类,声明 starter 的应用配置属性 ;
- 下面以自定义elasticsearch-starter为例进行说明
自定义starter
// 自动配置类
// 属性配置
// spring.factories
将项目打包部署到本地仓库 mvn install
使用starter
// pom.xml
// application.yml
// 测试数据
网友评论