1. 创建一个Maven工程
1.1 pom.xml 如下
<groupId>club.javadesign</groupId>
<artifactId>wxcloud-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.boot>2.1.2.RELEASE</spring.boot>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
1.2 创建Properties
package club.javadesign.wxcloud.CloudProperties;
@Getter
@Setter
@ConfigurationProperties(prefix = "wxcloud")
public class CloudProperties {
String password;
String name;
}
其中@ConfigurationProperties profix指定前缀为 ‘wxcloud’
1.3 创建一个简单的初始化Service
package club.javadesign.wxcloud;
@Slf4j
public class CloudService {
public static void init(String name, String password) {
System.out.println("组件已经被初始化.");
log.info("Properties, name: {} , password: {}", name, password);
}
public CloudService(String name, String password) {
init(name,password);
}
}
1.4 创建一个AutoConfiguration
package club.javadesign.wxcloud;
@Configuration
@ConditionalOnClass(CloudService.class)
@EnableConfigurationProperties(CloudProperties.class)
public class CloudAutoConfiguration {
@Resource
CloudProperties cloudProperties;
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(value = "enabled", matchIfMissing = true)
CloudService getCloudService(){
return new CloudService(cloudProperties.getName(),cloudProperties.getPassword());
}
}
1.5 配置spring.factories
路径为: resources\META-INF\spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
club.javadesign.wxcloud.CloudAutoConfiguration
1.6 打包编译、加入到repository中
mvn clean install
运行结果:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.464 s (Wall Clock)
[INFO] Finished at: 2019-01-20T21:03:47+08:00
[INFO] ------------------------------------------------------------------------
install:install-file
-Dfile=D:\wxcloud-spring-boot-starter\target\wxcloud-spring-boot-starter-1.0.0-SNAPSHOT.jar -DgroupId=club.javadesign
-DartifactId=wxcloud
-Dversion=1.0
-Dpackaging=Jar
2. 创建一个新的工程
2.1 引入jar包
部分依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>club.javadesign</groupId>
<artifactId>wxcloud</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.2 配置application.yml
wxcloud:
name: Sky
password: 123456
2.3 启动工程
组件已经被初始化.
2019-01-20 21:08:49.489 INFO 17184 --- [ main] club.javadesign.wxcloud.CloudService : Properties, name: Sky , password: 123456
2019-01-20 21:08:49.552 INFO 17184 --- [ main] c.j.MainStarter.MainStarterApplication : Started MainStarterApplication in 0.966 seconds (JVM running for 2.063)
3. 小结
以上,初步完成了Spring Boot Starter项目的创建;
在创建Starter时,只需要引入依赖 ‘spring-boot-autoconfigure’ 和 ‘spring-boot-configuration-processor’ 即可;
学习使用Starter,可以参考JPA源码直接阅读;