【SpringBoot框架篇】8.搭建自己的spring-boot-starter

1.简述

我们可以认为starter是一种服务,在使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动注入的bean。

我们在开发springboot项目的时候,经常会引用spring-boot-starter-web,spring-boot-starter-data-jpa等一些常用的依赖,我们也可以自己封装一个服务,然后再需要用的项目中引入依赖即可使用.

2.创建starter服务

首先先创建一个Maven项目

2.1.引入构建starter的核心依赖

 <properties>
        <srping.boot.version>2.3.0.RELEASE</srping.boot.version>
        <slf4j.version>1.7.25</slf4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>${srping.boot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>${srping.boot.version}</version>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>${srping.boot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
    </dependencies>

2.2.创建配置类

通过@ConfigurationProperties注解绑定前缀是my.db得属性

@ConfigurationProperties(prefix = "my.db")
public class DbConfig {
    private String username;
    private String password;
    //省略get,set方法
}

2.3.封装服务提供者

该类只有一个toString方法输出属性信息

public class DbServer {

    private String username;
    private String password;
    //省略get,set方法
 	@Override
    public String toString(){
        return "DbServer{username=" + username + " ,password=" + password + "}";
    }

2.4.注册Bean对象

下面代码通关EnableConfigurationProperties注入了DbConfig对象,然后把属性赋值给了
DbServer对象,最后调用了print打印方法.

@Configuration
@EnableConfigurationProperties(DbConfig.class)
public class DbAutoConfiguration {
    Logger logger= LoggerFactory.getLogger(this.getClass());
    @Bean
    public DbServer getBean(DbConfig dbConfig) {
        //创建组件实例
        logger.info("开始注册我的Bean对象");
        DbServer dbServer = new DbServer();
        dbServer.setUsername(dbConfig.getUsername());
        dbServer.setPassword(dbConfig.getPassword());
        return dbServer;
    }
}

2.5.暴露需要被装配的类

在resources目录下新建META-INF/spring.factories文件
在这里插入图片描述
2行添加需要暴露的类的名称(包含包名)

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ljm.boot.starter.config.DbAutoConfiguration

该文件会被 @SpringBootApplication注解中会下面被扫描并加载.

  • @SpringBootApplication
    • @EnableAutoConfiguration
      • @Import({AutoConfigurationImportSelector.class})
        • getCandidateConfigurations()
          • loadFactoryNames() 中被扫描到并加载
            在这里插入图片描述

2.6.发布jar包到本地仓库

在程序的跟路径执行

mvn clean install

看到下面的SUCCESS就代表发布成功了
在这里插入图片描述

3.引入我的my-spring-boot-starter依赖

创建一个springboot项目,然后引入刚发布的jar包

3.1.引入依赖

<dependency>
      <groupId>com.ljm.boot</groupId>
      <artifactId>my-spring-boot-starter</artifactId>
      <version>v1.0</version>
</dependency>

3.2.测试接口

@RestController
public class TestController {

    @Autowired
    DbServer dbServer;

    @RequestMapping("/test")
    public String test(){
        return dbServer.toString();
    }
}

3.3.修改配置文件

my:
  db:
    username: test
    password: 123456
server:
  port: 8008

由于我们在DbConfig中声明过这2个属性,所以在yml文件中能通过提示补齐属性
在这里插入图片描述

3.4.启动程序

能够看到控制台输出了my-spring-boot-starter依赖中的 ‘开始注册我的Bean对象‘ log信息.,
重下面日志信息打印中可以看到我们创建的starter中注册bean的类是EnhancerBySpringCGLIB动态代理生成的。
在这里插入图片描述
测试接口
可以看到接口也正常的返回了注入bean对象的属性信息
在这里插入图片描述

4.项目配套代码

gitee代码地址

创作不易,要是觉得我写的对你有点帮助的话,麻烦在gitee上帮我点下 Star

【SpringBoot框架篇】其它文章如下,后续会继续更新。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用\[1\]:在pom.xml文件中,可以找到以下内容: ``` <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent> ``` 引用\[2\]:Spring Boot是一个由Spring团队开发的框架,旨在简化Spring应用程序的初始搭建和开发过程。它使用了约定优于配置的原则,通过自动配置和默认值,减少了开发人员需要编写的样板化配置。Spring Boot致力于成为快速应用开发领域的领导者。它将Spring应用程序的开发过程简化为几个基本步骤,并提供了内嵌的Tomcat服务器,使应用程序能够在其中运行。\[2\] 引用\[3\]:在spring-boot-starter-parent-2.5.5.pom文件中,父类标签指定的是spring-boot-dependencies,该文件管理了将近200个第三方包依赖,并维护了对应的版本。这样,开发人员可以方便地根据自己的需求选择使用这些依赖,而不必担心版本冲突的问题。\[3\] 问题: spring-boot-starter-parent 2.5是什么? 回答: spring-boot-starter-parent 2.5是一个用于Spring Boot应用程序的父级依赖项。它提供了一些默认的配置和依赖项管理,使开发人员能够更轻松地搭建和开发Spring Boot应用程序。在pom.xml文件中,通过指定spring-boot-starter-parent的版本号,可以继承其默认配置和依赖项管理。\[1\] #### 引用[.reference_title] - *1* [’spring-boot-starter-parent:2.5.0‘ not found](https://blog.csdn.net/qq_44722108/article/details/126304509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringBoot 2.5.0实战之简介和环境搭建](https://blog.csdn.net/m0_68850571/article/details/124882210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [springBoot是如何管理项目中的依赖](https://blog.csdn.net/li1325169021/article/details/120867909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓亮君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值