SpringBoot自定义start

文章介绍了如何创建SpringBoot的自定义starter,包括核心代码模块、自动配置类的编写,以及如何在实际项目中使用和测试自定义starter。通过自定义starter,可以简化项目配置,提高开发效率。
摘要由CSDN通过智能技术生成

SpringBoot自定义start

随着Java的不断发展,Spring的出现为开发人员解决了bean管理的烦恼,但是其配置随着Java的使用者不断增加,其配置变得及其复杂。使用Spring配置一个web应用程序,需要配置许多配置。于是SpringBoot为简化这一过程定制了SpringBoot-Strater机制,减少开发人员对配置文件编写复杂的工作,只需引入对应start,配置文件配置对应参数即可。自定义starter可以说是对SpringBoot的自动配置原理的扩展应用。

实现原理可以参考:SpringBoot自动配置原理

一、starter 启动器定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1H75xvCT-1689323031029)(images/SpringBoot自定义start/image-20230714160547980.png)]

启动器只用来做依赖导入,启动器依赖自动配置模块,别人只需要引入启动器即可(starter)。

以springboot官方的自动配置模块为例:spring-boot-autoconfigure-2.5.5.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQxRFCC1-1689323031027)(images/SpringBoot自定义start/image-20230714154444516.png)]

二、自定义 starter 启动器

​ 通过上面的了解,大致知道了什么是springboot的启动器,下面就自行实现一个我们自己的自定义starter 启动器。其主要步骤主要有以下几个步骤完成:

​ 1、编辑相关业务的核心代码模块

​ 2、配置业务流程所需要的自动配置类

​ 3、配置Start模块,让使用者自需要引用Starter依赖即可快速使用其核心功能

自定义starter demo项目结构如下,wei-business为核心代码模块,实现基础类以及方法;wei-autoconfigure为自动配置模块,实现bean的自动配置注入。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AHhVwXz2-1689323031027)(images/SpringBoot自定义start/image-20230714154943719.png)]

2.1 构建核心业务代码模块

新建一个简单的项目,编写测试业务类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEY3MY5q-1689323031028)(images/SpringBoot自定义start/image-20230714155318831.png)]

public class BusinessCore {

    public void getCoreInfo() {
        System.out.println("获取到业务核心类信息...");
    }
}

项目pom.xml

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.5</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <groupId>com.wei</groupId>
  <artifactId>wei-business</artifactId>
  <version>0.0.1-SNAPSHOT</version>

2.2 配置自动配置类

1、新建一个简单的项目,项目pom.xml文件如下

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.wei</groupId>
<artifactId>wei-autoconfigure</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>wei-autoconfigure</name>

<dependencies>
    <!-- 自定义业务 -->
    <dependency>
        <groupId>com.wei</groupId>
        <artifactId>wei-business</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

    <!-- springboot启动依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- springboot自动配置核心依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>

    <!-- springboot 配置文件处理器(导入该依赖输入配置文件时可提示) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
    </dependency>

    <!-- 这个依赖的实质作用是添加一些类,从而达到条件装配的作用  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <!--  打包是生效,如果是通过类条件注入,那么该作用域必不可少  -->
        <scope>provided</scope>
    </dependency>
</dependencies>

2、实现一个获取绑定配置类

@EnableConfigurationProperties  //开启配置属性,从配置文件获取属性
@ConfigurationProperties("wei.hello") // 设置配置属性前缀
public class Hello {
    private String name = "默认名";

    private String sex = "默认性别";

    private String age = "默认年龄";
	// 自行实现get、set方法
}

3、实现核心的自动配置类

@Configuration // 标志为配置类
@ConditionalOnWebApplication // 是web类的时候加载
@EnableConfigurationProperties(Hello.class) // 使得 Hello 配置属性文件生效
public class MyAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean(Hello.class) // 不存在时注入
    public Hello hello() {
        System.out.println("自动配置注入hello");
        return new Hello();
    }

}

4、配置完bean实例以及自动配置类接下来也是是要使整个自动配置类生效的核心配置,在上面的讲解中自需要自定义一个spring.factories文件即可,即在resources目录下新建META-INF目录,在该目录下新增spring.factories文件。

# Auto Configure 自动配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.wei.MyAutoConfiguration

2.3 自定义starter测试使用

1、首先按照依赖顺序 maven install 编译安装项目 jar 包

2、引入自定义pom依赖

<!-- 自定义 start -->
<dependency>
    <groupId>com.wei</groupId>
    <artifactId>wei-autoconfigure</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

3、application.yml 添加自定义starter中配置属性,

# 自定义 start 配置
wei:
  hello:
    name: "lmw"
    sex: "男"
    age: 18

4、编写测试方法

@RestController
public class HelloController {

    // 自动配置注入bean
    @Autowired
    Hello hello;

    @GetMapping("/hello")
    public String hello(){
        // start 中普通类
        BusinessCore core = new BusinessCore();
        core.getCoreInfo();

        // start 中bean
        return hello.getName();
    }
}

5、启动项目,测试

启动时可以看到自定义starter中注入hello bean时的日志输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOEOeuVf-1689323031028)(images/SpringBoot自定义start/image-20230714160445471.png)]
访问接口测试,查看结果,自定义starter成功
[外链图片转存中...(img-YOEOeuVf-1689323031028)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值