【Spring Boot Starter学习】第一节 如何构建Starter

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源码直接阅读;

【Spring Boot Starter学习】第二节 构建自己的JPA Starter 【未完成、不可点击】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值