tlias--自定义starter

一、先搞懂:自定义 Starter 是什么?

Starter = 一套可复用的自动配置工具包

  • 别人引入你的 Starter
  • 不用写任何配置
  • 直接 @Autowired 就能用你的功能
  • 这就是自定义 Starter

你平时用的:

spring-boot-starter-webspring-boot-starter-redis

全是这种东西!

二、自定义 Starter 步骤(一共 6 步,背会)

目标

做一个 itheima-utils-spring-boot-starter

别人引入后,直接用 TokenParser

第 1 步:创建一个 Maven 项目(工具项目)

项目名:itheima-utils-spring-boot-starter

引入依赖

xml

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

第 2 步:写你的业务类(要被自动配置的类)

比如:TokenParser.java

java

运行

public class TokenParser {
    public void parse(){
        System.out.println("自定义Starter:TokenParser解析中...");
    }
}

注意:不要加 @Component! 因为加了别人也扫描不到。

第 3 步:写 自动配置类(最关键)

创建 TokenAutoConfiguration.java

java

运行

@Configuration // 表示这是一个配置类
public class TokenAutoConfiguration {

    // 把 TokenParser 交给 Spring 管理
    @Bean
    public TokenParser tokenParser(){
        return new TokenParser();
    }
}

作用:在这里创建 Bean,别人不用加任何注解!

第 4 步:创建 SpringBoot 自动配置文件(固定路径!)

必须创建 固定目录 + 固定文件名

plaintext

resources/META-INF/spring/
org.springframework.boot.autoconfigure.AutoConfiguration.imports

文件内容:写上你的自动配置类全类名

plaintext

com.itheima.config.TokenAutoConfiguration

第 5 步:打包(maven install)

把你的 Starter 打包到本地仓库

别人就能通过 Maven 引入使用!

第 6 步:别人使用你的 Starter

1. 引入 Maven 依赖

xml

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>itheima-utils-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

2. 直接注入使用!!!

java

运行

@Service
public class UserService {

    @Autowired
    private TokenParser tokenParser; // 直接用!

    public void test(){
        tokenParser.parse(); // 成功运行
    }
}

3. 测试成功!

不用配置,不用扫描包,直接用!

三、为什么这样就能用?(原理一句话)

SpringBoot 启动时:

  1. 自动读取所有 jar 包中的META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  2. 加载里面的配置类
  3. 执行 @Bean,创建对象
  4. 放入 IOC 容器
  5. 你直接 @Autowired 注入使用

这就是 SpringBoot 自动配置的终极原理!

全部评论

相关推荐

程序员小白条:25届?岗位要求只是最基本,有些东西是不能写明在岗位上的....主要是和其他人竞争,而不是基础岗位的底线
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务