引言
学过springboot的肯定用过各种starter,通过这些starter我们可以节省很多没有必要的配置,让项目更简洁,配置起来也更简单。那么starter是怎么开发的呢?这里我通过一个简单的案例演示如何创建一个自己的starter。
初始化项目
先创建一个springboot项目,然后在pom.xml中引入如下依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
其中关键的就是后两个依赖,spring-boot-autoconfigure 用于加载配置,spring-boot-configuration-processor 用于生成配置文件的自动提示。
然后需要删除pom.xml中的build部分(可能不完全一样,直接把build都删了就行):
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
然后可以把项目中没用的文件和文件夹删掉,如test、XXXApplication.java启动类等:
项目初始化就算完成了;
具体stater内容编写
下面编写具体starter内容,这里我用一个简单的hello案例演示;
首先编写一个用来读取配置的配置类:
@Configuration
@ConfigurationProperties("yang.hello")
@Data
@ComponentScan
public class HelloStarterConfig {
private String username;
@Bean
public String sayHello() {
return username + "向你问好";
}
}
代码不难,主要是了解这其中注解是什么意思;
@ConfigurationProperties注解作用是和配置文件(一般是 application.yml)进行绑定,将配置文件中对应的配置映射到对象的属性中。这里就是yang.hello.username就可以在application.yml文件中配置。
比如mysql数据库的配置类就是这样:
配置类写好后,在resources下创建文件夹META_INF,并创建文件spring.factories:
然后在该文件种编写如下配置:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yang.hellostarter.HelloStarterConfig
这就把刚才写的配置类给关联了起来,就是类似一个启动类的作用;
这样一个简单的starter就完成了,然后通过maven插件install下来;
然后这个starter就在你的本地maven仓库中了,可以调用测试一下:
引入依赖:
application.yml种可以配置:
然后在测试类测试一下:
运行结果:
这就是starter开发流程了,这只是一个简单案例,实际应用可以更灵活复杂点,但是大致步骤就是这样,也可以尝试把自己常用的一些工具类封装成自己的starter方便调用。