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

    技术2023-09-09  80

    整体项目结构

    一、开发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-------目录帖

    Processed: 0.008, SQL: 9