本篇文档将来介绍如何创建一个spring-boot-starter,来向spring-boot中添加自定义的依赖。
spring官方文档中也有关于这个的说明,你们也可移步这里去查看。
背景
spring-boot里面包含的功能已经十分丰富了,但是有些时候,我们还是需要加入一些不包含在这些模块之中的功能。但又想使之成为优雅的,可重用的组件。于是,我们就想是否能仿造spring-boot中其他组件一样的进行导入和管理。
答案是肯定的。下面我们就一期来跟着官方文档来一步一步的完成一个demo。
开始
命名
假设你的组件名为foo,那么你将包含如下4个工程
- foo-spring-boot
- foo-spring-boot-starter
- foo-spring-boot-autoconfigue
- foo-spring-boot-example
新建
新建一个maven项目,其package
为pom
,比如下面这个
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.piggsoft</groupId>
<artifactId>beetl-spring-boot</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
</project>
紧接着你将在这个项目下建立2个modulebeetl-spring-boot-starter
和beetl-spring-boot-autoconfigue
其中starter
将是一个空项目,管理依赖和载入,在starter
的src/main/resources/META-INF
下创建一个名为spring.providers
的文件。
provides: beetl-spring-boot-autoconfigue, beetl-core
其中autoconfigue
是导入的主要工程,在autoconfigue
的src/main/resources/META-INF
下创建一个名为spring.factories
的文件,该文件将告知spring-boot,这个autoconfigue
的初始类是哪一个。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.piggsoft.beetl.spring.boot.autoconfigue.BeetlAutoConfiguration
编写自动装配的逻辑
编写这个逻辑还需要了解Condition annotations
例子如下
@Configuration
@EnableConfigurationProperties(BeetlProperties.class)
public class BeetlAutoConfiguration {
}
其中BeetlProperties
,为配置信息定义类,从application.yml
中获取对应的信息
然后通过spring的@Bean
之类的注解进行装载。
附:Demo下载,请点击这里。
网友评论