第二十五节 SpringBoot开发自定义Starter

整体项目结构

一、开发autoconfigure模块

        autoconfigure用于在starter初始化得时候,加载配置配置文件或者执行一些指定的功能。

      (1)autoconfigure模块需要的需要三个固定的依赖

        <!-- 导入SpringBoot WEB开发环境 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 用于开发starter:自动配置注解 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <!-- 用于开发starter:开发自定义提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

      (2)编写一个spring.factories文件。它指定当autoconfigure被引入时,会加载下面配置的AutoConfigureConfig这个类。

#用逗号隔开
org.springframework.boot.autoconfigure.EnableAutoConfiguration
=com.zhoutianyu.learnspringboot.config.AutoConfigureConfig

        @Configuration注解表明它是一个配置类。它会初始化一个SystemInit类,然后调用此类的init方法。

        @EnableConfigurationProperties这个注解将DemoProperties文件引入Spring容器。 

@Configuration
@ConditionalOnClass(SystemInit.class)
@EnableConfigurationProperties(DemoProperties.class)
public class AutoConfigureConfig {

    @Bean(initMethod = "init")
    @ConditionalOnMissingBean
    public SystemInit systemInit() {
        return new SystemInit();
    }
}


@ConfigurationProperties(prefix = "demo")
@Data
public class DemoProperties {
    private String message;
}


public class SystemInit {

    public void init() {
        System.out.println("SystemInit类正在始化中....");
    }
}

二、开发starter模块

        starter模块就是引入上面得autoconfigure模块即可。

 <dependencies>
        <!-- starter项目导入最基本的SpringBoot依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

        <!-- 导入自动配置JAR-->
        <dependency>
            <groupId>com.zhoutianyu</groupId>
            <artifactId>demo-spring-boot-autoconfigure</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

三、使用自定义的starter

        最后,创建一个SpringBoot项目。它导入我们得自定义starter。

        <!-- 导入自定义starter-->
        <dependency>
            <groupId>com.zhoutianyu</groupId>
            <artifactId>demo-spring-boot-starter</artifactId>
            <version>1.0.0</version>
        </dependency>

        我们在application.yml配置文件里,配置第一步中的DemoProperties类。

server:
  port: 8081
...

demo:
  message: hello-starter

        最后,编写一个Controller,使用DemoProperties。

@RestController
@RequiredArgsConstructor
public class UserController {

    private final DemoProperties properties;

    @GetMapping(value = "/get")
    public String function() {

        return properties.getMessage();
    }
}

        启动项目,并访问http://localhost:8081/study/springboot/get ,返回与application.yml中指定配置,说明集成自定义SpringBoot-starter成功。

四、源码下载

        本章节项目源码:点我下载源代码

        目录贴:跟着大宇学SpringBoot-------目录帖

posted @ 2022-07-17 12:13  小大宇  阅读(78)  评论(0编辑  收藏  举报