第二十五節 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-------目錄帖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章