本文通过编写一个自定义starter来学习springboot的底层原理,帮忙咱们更好的应用springboot集成第三方插件
[toc]

步骤一:创立我的项目

世界上最平凡的成就,不是从不失败,而是每次失败后,仍能振作起来。

首先,咱们须要创立一个Springboot我的项目。删除启动类,配置文件,增加META-INF文件夹和spring.factories,最终我的项目构造如下

步骤二:增加依赖

在创立完我的项目后,咱们须要在pom.xml文件中增加以下三个依赖:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-configuration-processor</artifactId>    <version>2.7.0</version>    <optional>true</optional></dependency>

第一个依赖是Springboot的starter依赖,第二个依赖是Springboot的主动配置依赖。第三个是主动生成帮忙文档和元数据,以帮忙IDE主动实现和参数提醒。

步骤三:创立主动配置类

当你感到疲乏时,不要停下脚步,因为你不晓得,下一步可能就是胜利。

主动配置类是整个自定义starter的外围局部。咱们须要在主动配置类中实现以下工作:

  • 应用@Configuration注解将该类标记为配置类。
  • 应用@EnableConfigurationProperties注解引入属性配置类。
  • 应用@Bean注解将自定义服务类注入到Spring容器中。

上面是一个示例代码:

@Configuration@EnableConfigurationProperties(YoulaiProperties.class)public class YoulaiAutoConfiguration {    private final YoulaiProperties properties;    public YoulaiAutoConfiguration(YoulaiProperties properties) {        this.properties = properties;    }        @Bean    public YoulaiService myService() {        return new YoulaiService(properties.toString());    }}

步骤四:创立属性类

度日如年,光阴似箭,生命短暂而宝贵,让咱们在有生之年做本人想做的事件。

属性类用来存储自定义的配置属性。咱们须要在属性类中实现以下工作:

  • 应用@ConfigurationProperties注解将该类标记为属性类。
  • 应用prefix属性指定属性名前缀。
  • 定义对应的属性字段,并提供gettersetter办法。

上面是一个示例代码:

@Component@ConfigurationProperties(prefix = "youlai")public class YoulaiProperties {    private String bio = "youlai-mall 是基于Spring Boot 2.7、Spring Cloud 2021 & Alibaba 2021、Vue3、Element-Plus、uni-app等全栈支流技术栈构建的开源商城我的项目,波及 后端微服务、 前端治理、 微信小程序和 APP利用等多端的开发。";    private String serverPath="https://admin.youlai.tech/#/login?redirect=/dashboard";    private String apiPath="https://api.youlai.tech/doc.html#/home";    public String getBio() {        return bio;    }    public void setBio(String bio) {        this.bio = bio;    }    public String getServerPath() {        return serverPath;    }    public void setServerPath(String serverPath) {        this.serverPath = serverPath;    }    public String getApiPath() {        return apiPath;    }    public void setApiPath(String apiPath) {        this.apiPath = apiPath;    }    @Override    public String toString() {        return "YoulaiProperties{" +                "bio='" + bio + '\'' +                ", serverPath='" + serverPath + '\'' +                ", apiPath='" + apiPath + '\'' +                '}';    }}

步骤五:创立服务类

服务类是自定义starter提供的服务。咱们须要在服务类中定义服务办法,提供的服务。我这演示读取配置文件

上面是示例代码:

public class YoulaiService {    private String config;    public YoulaiService(String config) {        this.config = config;    }    public void doSomething() {        System.out.println("Config value is: " + config);    }}

步骤六:增加主动配置类到Springboot主动配置列表中

为了让Springboot可能主动配置咱们的starter,咱们须要将主动配置类增加到META-INF/spring.factories文件中,springboot启动会读取这个文件,并将他注入到spring的容器中,如下所示:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.youlai.springbootstarter.YoulaiAutoConfiguration

除了这种主动拆卸,还有一种被动拆卸,由应用方决定是否须要拆卸,这种只须要定义一个注解就好了

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(YoulaiAutoConfiguration.class)public @interface EnableYoulai {}

步骤七:打包并公布

实现以上步骤后,咱们能够应用Idea将我的项目打包并公布到Maven仓库中,我这里演示打包到本地

步骤八:在其余我的项目中应用自定义starter

胜利不是偶尔的,而是你日复一日致力的后果,永远不要放弃本人的幻想。

在其余Springboot我的项目中,咱们只须要在pom.xml文件中增加以下依赖即可:

<dependency><groupId>com.youlai-learing</groupId><artifactId>youlai-spring-boot-starter</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

如果是被动拆卸,则在启动类加上开启注解:

@SpringBootApplication@EnableYoulaipublic class SpringbootStarterConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootStarterConsumerApplication.class, args);    }}

而后就能够在代码中应用咱们在自定义starter中提供的服务了,如下所示:

      @Resource    private YoulaiService youlaiService;    @Test    void contextLoads() {      youlaiService.doSomething();    }

残缺代码地址:https://gitee.com/youlaiorg/youlai-learning.git

论断

通过本文的介绍,咱们学习到如何编写Springboot自定义starter,并且分明了springboot主动拆卸的原理

把握当下,不留遗憾,珍惜身边人,感恩生命中的每一个霎时。

本文由mdnice多平台公布