直接开门见山,要想自己定义一个starter,主要是分下面几步
第一步
首先要创建一个maven项目,这里我提供一个传送门,,这样可以很轻松地创建一个maven项目,并引入到自己的IDE里头
第二步
既然已经创建好了maven项目,那么就可以开始写自定义的starter了,这里主要分三个点来叙述
1.创建功能业务类
package spring.boot.starter.time.utils;import java.util.Date;import org.joda.time.DateTime;import org.joda.time.Seconds;public class TimeUtils { private static final String MINUTE_TEXT = "分钟前"; private static final String HOUR_TEXT = "小时前"; private static final String DAY_TEXT = "天前"; private static final int SECONDS_OF_MINUTE = 60; private static final int SECONDS_OF_HOUR = 60 * 60; private static final int SECONDS_OF_DAY = 24 * 60 * 60; public String generateCreateTimeText(Date date) { DateTime now = new DateTime(); DateTime createTime = new DateTime(date); int intervalSeconds = Seconds.secondsBetween(createTime, now).getSeconds(); int minutes = (int) Math.ceil((double) intervalSeconds / SECONDS_OF_MINUTE); if (minutes < 60) { return String.format("%d%s", minutes, MINUTE_TEXT); } int hours = (int) Math.ceil((double) intervalSeconds / SECONDS_OF_HOUR); if (hours < 24) { return String.format("%d%s", hours, HOUR_TEXT); } return String.format("%d%s", (int) Math.ceil((double) intervalSeconds / SECONDS_OF_DAY), DAY_TEXT); }}
2.创建自动配置类
package spring.boot.starter.time.utils;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class TimeUtilsAutoConfiguration { @Bean public TimeUtils convertChineseTime() { return new TimeUtils(); }}
3.在src/main/resources目录下新建一个文件夹命名为META-INF,并在这个文件夹下面新建文件,名为spring.factories,这个文件会告诉Spring Boot去找指定的自动配置文件。在应用程序启动过程中,Spring Boot使用springfactoriesloader类加载器查找
# Auto Configureorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\spring.boot.starter.time.utils.TimeUtilsAutoConfiguration#多个类用,\隔开
4.附pom.xml文件
4.0.0 spring.boot.demo spring-boot-starter-time-utils 0.0.1-SNAPSHOT jar spring-boot-starter-time-utils Demo starter project for Spring Boot UTF-8 UTF-8 1.8 org.springframework.boot spring-boot 1.4.3.RELEASE joda-time joda-time 2.9.7
到这里,第二步就完成了,意味着一个自定义的starter已经写好了
第三步
这里主要是通过别的项目用maven依赖的方式来调用上面已经自定义的starter
1.在需要调starter项目的pom文件中 引用starter
spring.boot.demo spring-boot-starter-time-utils 0.0.1-SNAPSHOT
2.在controller里面调用自定义的starter
package spring.boot.demo.controller;import org.joda.time.DateTime;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import spring.boot.starter.time.utils.TimeUtils;@RestControllerpublic class TimeUtilsStarterController { @Autowired private TimeUtils timeUtils; @RequestMapping("/time/utils/gain-now-time.htm") public String gainNowTime() { return timeUtils.generateCreateTimeText(new DateTime("2017-02-22T15:30:30").toDate()); }}
3.预览效果,这个时候启动该项目,然后在浏览器上输入 ,就可以看到效果了,如图