前言
我们都知道,Spring Boot最大的特点就是自动装配,简化依赖,可以让我们快速的搭建项目。使用Spring Boot之后,我们要想在项目中使用一些其他框架,只需要引入对应的Starter依赖就可以了。
那么你在实际开发中是否也开发过一些基础功能,这些功能需要在你们的Spring Boot项目中使用呢?
而这些功能可能在其他项目中可能也需要用到,如果我们把相同的功能在另一个项目中重新再写一遍的话肯定不是一个好方法。
我们可以将我们的功能做成一个对应的Starter模块,在项目中要使用时直接作为Maven依赖添加进去就OK了,这样一来,不仅不用重复开发,并且在功能做升级时,也能有更好的版本管理。
构建一个spring-boot-starter
接下来我们来构建一个spring-boot-starter,为了方便描述,假设我们的这个Starter的主要功能是用来方便的发送和接收异步事件。注意我们本文的目的主要是讲如何构建Starter,所以对于发送接收异步事件的实现细节不会展开描述。
基础概念
在开始构建之前,我们需要先同步几个基本的概念。
Application Context
只要你对Spring有所了解,那么一定知道Application Context,这是一个用于管理Spring bean的容器,它包含我们项目中所有的Controller、Service、Repository、Component等所有的对象。
@Configuration
@Configuration
是Spring中的一个注解,使用该注解标注的类相当于是Spring的xml配置文件,其主要目的是为Application Context提供一些Bean对象。你可以理解为@Configuration
标注的类就是一个Bean对象的工厂。
Auto-Configuration
在Spring Boot中有一个@EnableAutoConfiguration
注解,它通过读取spring.factories
文件里的EnableAutoConfiguration
下面指定的类,来初始化指定类下面的所有加了@Bean
的方法,并初始化这Bean。并且可以指定条件,按照具体的条件决定是否要自动装配Bean对象。
创建工程
接下来我们开始我们Starter的构建,我们给它一个名字叫 spring-boot-starter-eventmessage
。
假设我们需要在一个微服务环境中,要实现一个允许各个服务之间进行异步通信。我们的spring-boot-starter-eventmessage
主要提供以下功能:
- 首先,我们需要有一个
EventPublisher
对象,这个对象用于