答案:在需要时,用户也可以开发一个自己的Starter。下面来简单造一个可以即插即用的轮子,这个轮子是一个普通的Spring Boot Web工程,该工程有一个Service类,提供一个sayMsg方法,方法返回一条消息,消息内容可以通过配置文件进行配置。
按照命名规范,命名自己的Starter为hello-spring-boot-starter,当然,这不是必须的,不过还是应当尽量遵守。
首先,使用Spring Boot新建一个Web工程,命名为hello-spring-boot-starter,它的pom.xml依赖如下:
之所以引入依赖spring-boot-configuration-processor,是用它来在META-INF目录创建Starter的配置的元数据文件spring-configuration-metadata.json,开发者通过这个文件,可以熟练地在application.yml中进行参数配置。
引入了依赖,然后创建工程包路径:com.mystarter.springbootstarter。在包路径下创建一个参数配置类HelloProperties.java,声明一个配置消息内容的参数mystart.hello.msg,参数前缀为mystart.hello。
新建一个Service类MyHelloService.java,有输出消息的sayMsg方法。
然后给Starter写一个自动配置类MyHelloAutoConfiguration.java,通过这个类实现自动配置功能。
创建好MyHelloAutoConfiguration类,前面两个类的错误提示就自动消失了。然后在resources目录下新建META-INF目录,在META-INF下新建一个spring.factories文件,将Starter的自动配置入口MyHelloAutoConfiguration写入这个文件,具体如下:
Spring Boot在启动时SpringFactoriesLoader会找到META-IN目录下的spring.factories文件,并根据这个文件中的配置参数值找到自动配置入口,根据配置信息来自动加载相应的文件与参数。然后执行mvn命令: