0
点赞
收藏
分享

微信扫一扫

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

书坊尚 2022-07-27 阅读 88


整体项目结构

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

一、开发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开发自定义Starter_re模块_02

四、源码下载

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

   ​

举报

相关推荐

0 条评论