自定义starter与Spring boot完成整合
在了解Spring boot自动配置及第三方starter整合(例如 mybatis-spring-boot-starter)的原理后,准备自己实现一个starter,并与Spring boot完成整合。
1.首先回顾下mybatis-spring-boot-starter关键点的实现
点击进入 mybatis-spring-boot-starter 依赖内部,有一个mybatis-spring-boot-autoconfigure依赖,关键配置文件spring.factories就在这个包里
在MybatisAutoConfiguration类中完成了SqlSessionFacotry bean的生成
Spring boot在启动时会加载根路径下所有spring.factories文件,并筛选出key为EnableAutoConfiguration的类进行实例化bean放入IOC容器,以此完成 Spring boot和mybatis的整合
2.参考mybatis-spring-boot-autoconfigure的实现,现在自己实现一个starter
(1)目前结构如下
demo是一个spring boot项目,custome-spring-boot-autoconfigure和customer-spring-boot-starter模拟第三框架
(2)custome-spring-boot-autoconfigure项目的功能是将当前日期格式化为yyyy-MM-dd,代码如下
public class DateUtil {
public String getDate(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(new Date());
}
}
新建DateUtilConfiguration 配置类,并在resources目录下创建/meta-INF/spring.factories文件,这样Spring boot项目启动时会加载该配置文件,并将DateUtil bean放入IOC容器。
@Configuration
public class DateUtilConfiguration {
@Bean
public DateUtil getDateUtil(){
return new DateUtil();
}
}
spring.factories文件添加key-value键值对
org.springframework.boot.autoconfigure.EnableAutoConfiguration= com.liu.test.DateUtilConfiguration
(3) 在customer-spring-boot-starter的pom.xml文件中引入custome-spring-boot-autoconfigure的坐标
org.example custome-spring-boot-autoconfigure 1.0-SNAPSHOT
在demo的pom.xml文件中引入customer-spring-boot-starter的坐标
org.example customer-spring-boot-starter 1.0-SNAPSHOT
整体依赖情况
demo---->customer-spring-boot-starter—>custome-spring-boot-autoconfigure
(4)demo项目创建controller.注入DateUtil,调用DateUtil的getDate()方法
@RestController
public class Controller {
@Autowired
private DateUtil dateUtil;
@RequestMapping("/test")
public String test(){
return dateUtil.getDate();
}
}
启动demo 浏览器访问localhost:8080/test,结果如下
整合成功。
总结:
第三方 xxxxx-spring-boot-starter整合spring boot需要满足的条件
1.需要有Java config配置类完成bean的生成,这样才能调用bean的方法
2.需要有spring.factories文件来指定需要加载的配置类



